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