Collection Framework
▶ Collection Framework: 다양한 자료구조의 구현체를 클래스 라이브러리 형태로 제공
java.util.ArrayList<E> → 중복허용, 데이터 간 순서 존재
java.util.HashSet<E> → 중복허용X, 데이터 간 순서 존재
java.util.HashMap<K,V> → 중복허용, 데이터 간 순서 X
▶ Array와 ArrayList
· Array
> 데이터 개수의 동적인 변경 불가 (fixed-size)
> 메모리상에 연속적 데이터를 저장한다. 미리 할당된 크기만큼 저장
> 현재 배열 size가 4인데 6으로 다시 만들면, resize 되었다고 느낄 수 있지만
현재와 동일한 메모리에 size를 2개 더 추가하는 것이 아니라, 새롭게 size가 6인 메모리를 할당한다.
· ArrayList
> 데이터 개수의 동적인 변경 가능
> 메모리상에 불연속적으로 데이터를 저장한다.
> Primitive Type 데이터는 원소로 가질 수 없음. Object Type 만 원소로 가질 수 있음
그렇다고 ArrayList에 int, float 등의 데이터를 저장하지 못하는 것이 아니다.
다만, 그 데이터를 저장할 때 값 자체가 저장되는 것이 아니라
그 값이 저장되어 있는 reference Type의 value들이 Object 형태로 저장되는 것이다.
▶ 주요 인터페이스들의 특징
· java.util.List<E> Interface
> 구현하고 있는 클래스 ex) ArrayList<E>, LinkedList<E>, Stack<E> ...
> 순서가 있는 데이터의 집합
> 데이터들 간 중복을 허용
· java.util.Set<E> Interface
> 구현하고 있는 클래스 ex) HashSet<E>, TreeSet<E> ...
> 순서가 있는 데이터의 집합
> 데이터들 간 중복을 허용하지 않음
· java.util.Map<K,V> Interface
> 구현하고 있는 클래스 ex) HashMap<K,V>, TreeMap<K,V> ...
> 순서가 없는 데이터의 집합
> Key는 중복을 허용하지 않지만, Value는 중복을 허용한다.