🌱 오늘의 주제 : ArrayList
🌱 ArrayList 메서드
🌱 ArrayList
- 가장 많이 사용되는 컬렉션 클래스
- 데이터의 저장순서가 유지
- 중복을 허용
- 배열에 순서대로 저장
- 배열에 더 이상 저장할 공간이 없으면 보다 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 복사 후 저장.
package chapter11_p;
import java.util.ArrayList;
import java.util.Collections;
public class ex11_1p {
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));
print(list1, list2);
Collections.sort(list1); // list1과 list2를 정렬한다.
Collections.sort(list2);
print(list1, list2);
System.out.println("list1.containsAll(list2): " + list1.containsAll(list2)); // list1이 list2의 모든 요소를 포함하고 있을 때만 ture.
list2.add("B");
list2.add("C");
list2.add(3, "A"); // 인덱스가 3인 곳에 "A"를 추가 // B, C가 밀려나면서 인덱스3인 곳에 A가 생김.
print(list1, list2);
list2.set(3, "AA"); // 인덱스가 3인 곳을 "AA"로 변경
print(list1, list2);
System.out.println("list1.retainAll(list2): " + list1.retainAll(list2)); // ArrayList에 저장된 객체 중에서 주어진 컬렉션과 공통된 것만 남기고 나머지 삭제.
//list1에서 list2와 겹치는 부분만 남기고 나머지는 삭제한다.
print(list1,list2);
// list2에서 list1에 포함된 객체 삭제.
for(int i = list2.size()-1; i >= 0; i--) {
if(list1.contains(list2.get(i))) // contains : 객체가 포함되어 있는지 확인.
list2.remove(i); // 인덱스가 i인 곳에 저장된 요소를 삭제.
}
print(list1, list2);
} // main
static void print(ArrayList list1, ArrayList list2) {
System.out.println("list1: " + list1);
System.out.println("list2: " + list2);
System.out.println(); // ??
}
}
-----
<결과>
list1: [5, 4, 2, 0, 1, 3]
list2: [4, 2, 0]
list1: [0, 1, 2, 3, 4, 5]
list2: [0, 2, 4]
list1.containsAll(list2): true
list1: [0, 1, 2, 3, 4, 5]
list2: [0, 2, 4, A, B, C]
list1: [0, 1, 2, 3, 4, 5]
list2: [0, 2, 4, AA, B, C]
list1.retainAll(list2): true
list1: [0, 2, 4]
list2: [0, 2, 4, AA, B, C]
list1: [0, 2, 4]
list2: [AA, B, C]
🌱 ArrayList의 추가와 삭제
- 삭제할 객체의 바로 아래 있는 데이터를 한 칸씩 위로 복사해서 삭제할 객체를 덮어쓰는 방식
- 객체를 순차적으로 저장할 때와 마지막에 저장된 것부터 삭제하면 데이터를 옮기지 않아도 되기 때문에, 작업시간 단축
- 중간에 있는 객체를 추가하거나 삭제하는 경우, 다른 데이터의 위치를 이동해야 하기 때문에, 작업시간 오래 걸림.
'Java' 카테고리의 다른 글
Java - Arrays의 메서드 (0) | 2023.02.04 |
---|---|
Java - LinkedList (0) | 2023.02.03 |
Java - 컬렉션 프레임웍의 핵심 인터페이스 (0) | 2023.02.03 |
Java - 인터페이스(interface) (0) | 2023.01.29 |
Java - 추상 클래스(abstract class), 추상메서드(abstract method) (0) | 2023.01.29 |