Collections Framework의 ArrayList에 대해 알아보자
import java.util.*;
public class arrayList {
public static void main(String[] args) {
ArrayList list1 = new ArrayList(10);
list1.add(new Integer(5));
list1.add(new Integer(4));
list1.add(new Integer(2));
list1.add(new Integer(0));
list1.add(new Integer(1));
list1.add(new Integer(3));
ArrayList list2 = new ArrayList(list1.subList(1, 4)); // list1의 index 1부터 3까지(4는 포함 안됨) 추출해 list2 선언
Collections.sort(list1); // list1 정렬
Collections.sort(list2);
System.out.println(list1.containsAll(list2)); //true
list2.add("B");
list2.add("C");
list2.add(3, "A"); // 3번째 index에 저장
list2.set(3, "AA"); // 3번째 index 수정
list1.retainAll(list2); // list1에서 list2과 공통된 것만 남기고 나머지는 삭제
// list2에서 list1에 포함된 객체들 삭제
for(int i = list2.size() - 1; i >= 0; i--) {
if(list1.contains(list2.get(i))) {
list2.remove(i);
}
}
}
}
- 변수 i를 증가시키면서 삭제하면, 한 요소가 삭제될 때마다 빈 공간을 채우기 위해 자리이동을 해 올바른 결과 얻을 수 없음
- 변수를 감소시키며 삭제해야 자리이동에 영향 받지 않고 원하는 결과를 얻을 수 있음
ArrayList의 인스턴스를 처음 생성할 때, 저장할 데이터의 개수를 고려해 충분한 용량의 인스턴스를 생성하는 것이 좋음