본문 바로가기

Java

ArrayList 클래스

Q1. ArrayList의 get 메서드는 어떻게 구현하는가?

public get(int index){

   if(index <0 || index >= size){
      throw IndexOutOfBoundsException();
   }
   
   return array[index];
}

 

Q2. ArrayList의 set 메서드는 어떻게 구현하는가?

public E set(int index, E element){
  
   E old = get(index); 
   array[index] = element;
   
   return old;
}

 

 

Q3. ArrayList의 indexOf 메서드와 equals 메서드는 어떻게 구현하는가?

public E indexOf(Object target){
    
     for(int i=0; i<size; i++){
       if(equals(target, array[i]){
          return i;
       }
     }
     return -1;
}


public boolean equals(Object target, Object element){

    if(target == null){
       return element == null;
    }else{
      return target.equals(element);
    }
}

 

Q4. ArrayList의 remove 메서드는 어떻게 구현하는가?

public E remove(int index){
     E element = get(index);

     for(int i=index; i<size-1; i++){
          array[i] = array[i+1];
     }
     return element;
}

 

Q5. ArrayList의 add(int, E) 메서드와 add(E) 메서드는 어떻게 구분하는가?

 

 

Q6.컬렉션과 관련된 클래스를 사용할 때는 그 클래스의 무엇을 살펴보는 것이 좋은가?

      왜 그러한가? 

 

Q7. ArrayList는 '어떤' 배열인가?

- 크기가 변할 수 있는 '동적' 배열이다. 

 

Q8. ArrayList의 생성자는 몇 개인가?

      각각은 무엇인가?

- 3개이다. 

 

Q8-1 ArrayList의 생성자 3개는 각각 무엇인가?

 

 

Q9. ArrayList의 기본 생성자로 객체를 생성하면, 객체를 저장할 공간은 어떻게 되는가?

- 10개로 할당된다. 

 

Q10. ArrayList 객체의 초기 크기보다 많은 데이터가 들어가면 어떤 작업이 수행되는가?

- ArrayList의 크기를 늘리는 작업이 수행된다. 

 

Q10-1 ArrayList의 크기를 늘리는 작업은 어떻게 수행되는가?

 

Q10-2 이러한 작업이 수행되면 무엇에 영향을 주는가?

 

Q10-3 ArrayList의 add() 메소드의 시간 복잡도는 어떠한가?

 

 

Q11. ArrayList 클래스가 구현하는 인터페이스는 어떤 어떤 것이 있는가?

 

Q12. size() 메소드는 ArrayList에 관해 어떤 정보를 알려주는가?

- ArrayList에 현재 들어 있는 값의 개수를 알려준다. 

 

 

Q13. ArrayList 클래스와 Vector 클래스의 차이점은 무엇인가?

 

Q13-1. ArrayList는 '어떻게' synchronized되어야 하는가?

 

Q13-2. '언제' ArrayList는 synchronized되어야 하는가?

 

Q13-3. 13-1은 무엇에 의해서 달성 가능한가?

 

 

Q13-4 만약에 13-2가 없다면, 무엇에 의해서 synchronized되어야 하는가?

 

 

 

 

참고

Q1~Q5 자바로 배우는 핵심 자료구조와 알고리즘 5/24

Q6~Q12 자바의 신 5/30

Q13 자바의 신 6/9 

A1~A4 5/30

 

'Java' 카테고리의 다른 글

JIT 컴파일러  (0) 2022.05.27
어노테이션  (0) 2022.05.27
참조 자료형  (0) 2022.05.23
쓰레드  (0) 2022.05.23
람다 표현식  (0) 2022.05.22