Collection
데이터의 집합, 그룹
Collections Framework
다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
주요 인터페이스
- List 인터페이스: 순서가 있는 데이터 집합
- Set 인터페이스: 집합적인 데이터 저장 공간
- Map 인터페이스: 키와 값의 한 쌍으로 이루어지는 데이터 집합
- List와 Set은 Collection 인터페이스를 구현하고, 두 인터페이스의 공통 부분은 Collection 인터페이스에서 정의한다.
- Map은 구조상의 차이로 인해 별도로 정의된다.
1. List interface
- ArrayList
- 단방향 데이터 구조
- 각 데이터에 대한 인덱스를 가지고 있어서 조회 성능이 뛰어나다.
- Vector
- 과거에 대용량 처리를 위해 사용했다.
- 내부에서 자동으로 동기화 처리가 일어나서 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않는다.
- LinkedList
- 양방향 포인터 구조
- 데이터 삽입, 삭제가 빈번할 경우 데이터 위치 정보만 수정하면 돼서 유용하다.
- Stack, Queue, 양방향 Queue 등
2. Set interface
- HashSet
- 가장 빠른 random access 속도
- 순서를 예측할 수 없다.
- TreeSet
3. Map interface
- HashMap
- Hashtable
- 동기화 지원
- HashMap보다 느리다
- null 불가
- TreeMap
- 정렬된 순서대로 key와 value를 저장한다.
- 검색이 빠르다.
4. Collection interface
- List 인터페이스와 Set 인터페이스의 공통 부분을 정의하고 인터페이스는 이를 상속받는다.
- add(E e), contains(Object o), iterator(), size(), toArray() 등을 제공
상속 구조
특징
인터페이스 | 순서 | 중복 허용 | 구현 클래스 |
---|
List<E> | O | O | Vector, ArrayList, LinkedList, Stack, Queue |
Set<E> | X | X | HashSet, TreeSet |
Map<K, V> | X | key: X / value: O | HashMap, TreeMap, Hashtable, Properties |
컬렉션 클래스 collection class
컬렉션 프레임워크에 속하는 인터페이스를 구현한 클래스
- 모든 컬렉션 클래스는 List, Set, Map 인터페이스 중 하나의 인터페이스를 구현한다.
- 클래스 이름에 구현한 인터페이스의 이름이 포함되어 있다.
- Vector, Hashtable은 이전부터 사용, 호환을 위해 남아있다.
- 두 클래스보다 새로 추가된 ArrayList나 HashMap이 성능이 좋다.
출처