배열
애플리케이션 개발 시 다수의 객체를 저장해 두고 필요할 때 꺼내서 사용하는 경우 가장 간단하게 사용하는 방법
배열의 문제점
생성 시 크기 고정되고 사용 시 크기 변경 불가
불특정 다수의 객체를 저장하기에는 문제
객체 삭제했을 때 해당 인덱스가 비게 됨
객체를 저장하려면 어디가 비어있는지 확인해야 하는 코드 필요
List(인터페이스) 컬렉션의 특징
ArrayList
Vector
LinkedList
ArrayList
List 인터페이스의 구현 클래스
크기가 가변적으로 변하는 선형 리스트
배열과 유사
순차 리스트, 인덱스 사용
배열과 차이
배열 : 크기 고정
ArrayList
객체 추가 가능
저장 용량 초과 시 자동으로 저장 용량 증가
기본 10개
new ArrayList(30);
처음부터 크게 설정 가능
List list = new ArrayList();
list.add("hello");
String str = (String)list.get(0);
ArrayList<String> / ArrayList<Integer>
Iterator
<E>
인터페이스Vector<Integer> v = new Vector<Integer>();
Iterator<Integer> it = v.iterator();
Iterator
객체 반환hasNext()
/ next()
메소드LinkedList
Vector
List<E> list = new Vector<E>();
ArrayList와 동일한 내부 구조
스레드 동기화 (synchronization)되어 있기 때문에
복수의 스레드가 동시에 Vector에 접근해 객체를 추가, 삭제하더라도 스레드에 안전 (thread safe)
Set 컬렉션 특징
수학의 집합에 비유
저장 순서가 유지되지 않음
인덱스로 객체를 검색해서 가져오는 메소드 없음
get()
메소드 없음
객체를 중복 저장 불가
구현 클래스
HashSet
LinkedHashSet
TreeSet
HashSet
Set<E> set = new HashSet<E>();
Set 인터페이스의 구현 클래스
객체를 순서없이 저장
동일 객체 및 동등 객체는 중복 저장하지 않음
동등 객체 판단 방법
객체 저장하기 전에 hasCode()
를 호출해서 해시코드를 얻어내어
저장되어 있는 객체들의 해시코드와 비교해서 동일일 해시코드가 있다면
equals()
메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고 중복 저장하지 않음
hashCode()
와 equals()
(둘 다) 재정의 해서 동등 객체가 될 조건을 정해야 함Map 컬렉션의 특징
HashMap
HashTable
LinkedHashMap
TreeMap
Properties
키 객체는 hashCode()와 equals() 메소드를 재정의해 동등객체가 될 조건을 정함
Hashtable