준비 목록
– 기존 Vector의 추가 개발로 구현원리와 기능적으로 동일
– List 인터페이스를 구현하므로 메모리 순서가 유지되고 중복이 허용됩니다.
– 어레이를 데이터 저장공간으로 활용(어레이 기반)
ArrayList에 저장된 객체 삭제 프로세스
– ArrayList에 저장된 세 번째 데이터(data(2))를 삭제하는 과정. remove.call.list (2);
1. 삭제할 데이터 아래의 데이터를 한 위치 위로 복사하여 삭제할 데이터를 덮어씁니다.
2. 모든 데이터가 한 셀씩 이동되었기 때문에 마지막 데이터는 0으로 변경됩니다.
public static void main(String() args) {
// 기본길이 (용량,capacity)가 10인 ArrayList를 생성
ArrayList list1 = new ArrayList(10);
// ArrayList에는 객체만 저장간으
// autoboxing에 의해 기본형이 참조형으로 자동 변환
list1.add(5);
list1.add(4);
list1.add(2);
list1.add(0);
list1.add(1);
list1.add(3);
// ArrayList(Colleciont c), list1의 일부를 뽑아서 새로운 리스트를 만듬 1<=x<4 -> 읽기전용
ArrayList list2 = new ArrayList(list1.subList(1, 4));
System.out.println(list1);
System.out.println(list2);
// list1과 list2를 정렬한다(오름차순 정렬)
// Collection은 인터페이스, Collections는 유틸 클래스
Collections.sort(list1);
Collections.sort(list2);
System.out.println(list1);
System.out.println(list2);
System.out.println(list1.containsAll(list2));
list2.add("B");
list2.add("C");
list2.add(3, "A"); // 3은 추가할 위치
System.out.println(list2);
list2.set(3, "AA"); // 3위치 기존의 데이터 값 변경
System.out.println(list2);
list1.add(0, "1");
System.out.println(list1);
System.out.println("index = " + list1.indexOf("1"));
System.out.println("index = " + list1.indexOf(1));
// list1에서 list2와 겹치는 부분만 남기고 나머지는 삭제
System.out.println("list1.retainAll(list2): " + list1.retainAll(list2));
System.out.println(list1);
System.out.println(list2);
// list2에서 list1에 포함된 객체들을 삭제한다
for (int i = list2.size() - 1; i >= 0; i--) {
if (list1.contains(list2.get(i))) {
list2.remove(i);
}
}
System.out.println(list1);
System.out.println(list2);
}