Collection 인터페이스 구성 | |
Collection |
가장 상위 인터페이스이다. |
Set |
중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다. |
SortedSet |
오름차순을 갖는 Set 인터페이스이다. |
List |
순서가 있는 집합을 처리하기 위한 인터페이스이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 ArrayList가 있다. |
Queue |
여러 개의 객체를 처리하기 전에 담아서 처리할 때 사용하기 위한 인터페이스이다. 기본적으로 FIFO를 따른다. |
Map |
Map은 키와 값의 쌍으로 구성된 객체의 집합을 처리하기 위한 인터페이스이다. 이 객체는 중복되는 키를 허용하지 않는다. |
SortedMap |
키를 오름차순으로 정렬하는 Map 인터페이스이다. |
Set 인터페이스
- HashSet : 데이터를 해쉬 테이블에 담는 클래스로 순서 없이 저장된다.
- TreeSet : red-black이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. 데이터를 담으면서 동시에 정렬을하기 때문에 HashSet보다 성능상 느리다.
- LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다.
List 인터페이스
- Vector : 객체 생성시에 크기를 지정할 필요가 없는 배열 클래스이다.
- ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.
- LinkedList : ArrayList와 동일하지만, Queue 인터페이스를 구현했기 때문에 FIFO 큐 작업을 수행한다.
Map 인터페이스
- Hashtable : 데이터를 해쉬 테이블에 담는 클래스이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용하기 바란다.
- HashMap : 데이터를 해쉬 테이블에 담는 클래스이다. Hashtable 클래스와 다른 점은 null 값을 허용한다는 것과 동기화되어 있지 않다는 것이다.
- TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.
- LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트(doubly-linkedlist)라는 방식을 사용하여 데이터를 담는다는 점만 다르다.
Queue 인터페이스
Queue 인터페이스를 구현한 클래스는 두 가지로 나뉜다. java.util 패키지에 속하는 LinkedList와 PriorityQueue는 일반적인 목적의 큐 클래스이며, java.util.concurrent 패키지에 속하는 클래스들은 컨커런트 큐 클래스이다.
- PriorityQueue : 큐에 추가된 순서와 상관없이 먼저 생성된 객체가 먼저 나오도록 되어 있는 큐다.
- LinkedBlockingQueue : 저장할 데이터의 크기를 선택적으로 정할 수도 있는 FIFO 기반의 링크 노드를 사용하는 블로킹 큐 다.
- ArrayBlockingQueue : 저장되는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐다.
- PriorityBlockingQueue : 저장되는 데이터의 크기가 정해져 있지 않고, 객체의 생성순서에 따라서 순서가 저장되는 블로킹큐다.
- DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐다.
- SynchronousQueue : put() 메서드를 호출하면, 다른 스레드에서 take() 메서드가 호출될 때까지 대기하도록 되어 있는 큐다. 이 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메서드는 0이나 null을 리턴한다.
[ 출저 ] - 자바 성능 튜닝이야기 story04
'JAVA Platform > JAVA' 카테고리의 다른 글
[JAVA] - String, StringBuffer, StringBuilder 버전에 따른 차이 (0) | 2014.09.08 |
---|---|
[JAVA] - Collection 관련 클래스의 동기화 (0) | 2014.09.08 |
[JAVA] - JFrame, Frame 종료 이벤트 (0) | 2014.09.08 |
[JAVA] - System.getProperty() Argument 종류 (0) | 2014.09.08 |
[JAVA] - 로컬 폰트이름 String 배열로 가져오기 (0) | 2014.09.08 |