List 컬렉션
- 특징
- 구현 실제 클래스
- ArrayList, Vector, LinkedList
- 주요 메서드
1) boolean add() : 데이터 추가
2) void add(int index, 추가 객체) : 특정 위치에 객체 추가
3) set(int index, 변경 객체) : 특정 위치 값을 변경
4) boolean contains(객체) : 해당 객체가 있는 여부 확인
5) get(int index) : 특정 위치에 있는 객체 가져오기
6) isEmpty() : 컬렉션이 비어 있는지 확인
7) int size() : 컬렉션의 크기
8) void clear() : 포함된 모든 객체를 삭제
9) remove(int index) : 해당 위치의 객체를 삭제
10) boolean remove(Object o) : 주어진 객체를 삭제
List<Product> plist = new ArrayList<Product>();
plist.add(new Product("사과", 3000, 2));
plist.add(new Product("키위",1700,2));
plist.add(new Product("딸기",1400,3));
Product p = plist.get(0);
System.out.println("객체등록여부: "+plist.contains(p)); //true
Product p2 = new Product("딸기",3400,1);
System.out.println("객체등록여부2: "+plist.contains(p2)); // false
plist.add(p2);
System.out.println("객체등록여부3: "+plist.contains(p2)); //true
System.out.println("크기: "+plist.size()); // 4 출력
System.out.println("비워있는지?:"+plist.isEmpty()); // false
plist.remove(0);
System.out.println("크기: "+plist.size()); // 3 출력
plist.clear();
System.out.println("크기: "+plist.size()); // 0 출력
System.out.println("비워있는지?:"+plist.isEmpty()); true
class Product{
private String name;
private int price;
pirvate int cnt;
public Product(String name, int cnt, int price) {
this.name = name;
this.cnt = cnt;
this.price = price;
}
public String getName() {
return name;
}
public int getCnt() {
return cnt;
}
public int getPrice() {
return price;
}
}
Vector
- List list = new Vector();
- 특징
1) 쓰레드 동기화
2) 복수의 쓰레드가 동시에 Vector에 접근해 객체를 추가, 삭제하더라도 쓰레드에 안정
==> 쓰레드가 안정성이 부족하여 추가/삭제시 쓰레드 안정성 기능이 지원되지 않으면 생략되는 경우가 있다
LinkedList
- List list = new LinkedList();
- 특징
1) 인접 참조를 링크해서 체인처럼 관리
2) 특정 인덱스에서 객체를 제거하거나 추가하게되면 바로 앞/뒤 링크만 변경
3) 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 좋은 성능