|
- Collections Framework enhancements : http://download.oracle.com/javase/1,5.0/docs/guide/collections/changes5.html
• Collection
‣ SortedSet : 오름차순을 갖는 Set 인터페이스이다.
‣ HashSet : 데이터를 해쉬 테이블에 다믄 클래스로 순서 없이 저장됨
‣ TreeSet : red-black 이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다.
‣ LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저아된 순서에 따라서 순서가 결정된다.
‣ HashSet : 데이터를 해쉬 테이블에 다믄 클래스로 순서 없이 저장됨
‣ TreeSet : red-black 이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다.
‣ LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저아된 순서에 따라서 순서가 결정된다.
∘ List : 순서가 있는 집합을 처리하기 위한 인터페이스 - 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에서 가장 많이 사용하는 것은 Vector이다
‣ Vector : 크기를 객체 생성시에 지정할 필요가 없는 배열 클래스이다.
‣ ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.
‣ LinkedList : ArrayList와 동일하지만, Queue 인터페이스를 구현했기 때문에 FIFO 큐 작업을 수행한다.
‣ ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.
‣ LinkedList : ArrayList와 동일하지만, Queue 인터페이스를 구현했기 때문에 FIFO 큐 작업을 수행한다.
‣ java.util 패키지에 속하는 LinkedList와 priorityQueue
‣ java.util.concurrent 패키지에 속하는 컨커런트 큐 클래스
‣ Queue 들
‣ java.util.concurrent 패키지에 속하는 컨커런트 큐 클래스
‣ Queue 들
• LinkedBlockingQueue : 선택적으로 저장할 데이터의 크기를 정할 수도 있는 FIFO 기반의 링크 노드를 사용하는 블로킹 큐
• ArrayBlockingQueue : 저장되는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐
• PriorityBlockingQueue : 저장되는 데이터의 크기가 정해져 있지 않고, 객체의 생성 순서에 따라서 순서가 저장되는 블로킹 큐
• DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐
• SynchronousQueue : put() 메소드를 호출하면, 다른 스레드에서 take() 메소드가 호출될 때까지 대기하도록 되어있는 큐이다. 이 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메소드는 0이나 null을 리턴한다.
• ArrayBlockingQueue : 저장되는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐
• PriorityBlockingQueue : 저장되는 데이터의 크기가 정해져 있지 않고, 객체의 생성 순서에 따라서 순서가 저장되는 블로킹 큐
• DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐
• SynchronousQueue : put() 메소드를 호출하면, 다른 스레드에서 take() 메소드가 호출될 때까지 대기하도록 되어있는 큐이다. 이 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메소드는 0이나 null을 리턴한다.
∘ Hashtable : 데이터를 해쉬 테이블에 담는 클래스 이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용
∘ HashMap : 데이터를 해쉬 테이블에 담는 클래스이다. Hashtable 클래스와 다른 점은 null을 허용한다는 것과 동기화되어 있지 않다는 것
∘ TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.
∘ LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트(Doubly-linked list)라는 방식을 사용하여 데이터를 담는다는 점만 다르다.
∘ HashMap : 데이터를 해쉬 테이블에 담는 클래스이다. Hashtable 클래스와 다른 점은 null을 허용한다는 것과 동기화되어 있지 않다는 것
∘ TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.
∘ LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트(Doubly-linked list)라는 방식을 사용하여 데이터를 담는다는 점만 다르다.
Sun에서 정리한, 각 인터페이스별로 가장 일반적으로 사용되는 클래스. 가장 안정적인 클래스로 선정된 녀석들
Interface | 클래스 |
Set | HashSet |
List | ArrayList |
Map | HashMap |
Queue | LinkedList |
프로그래밍을 하다가 나도 모르게 사용하고 있던 ArrayList, HashMap, HashSet을 보면서 '왜 이 녀석들을 쓰는거야?'라고 느끼다가 이 책에서 어느정도 정리가 되는 느낌이다. 처음에는 이 책의 가치를 잘 몰랐지만, 개발 프로젝트를 진행하면서 조금씩 조금씩 이 책이 지닌 가치가 눈에 보인다. 차근차근 이 책을 읽어가면서 내 것으로 만들어보자.
'Java > Language' 카테고리의 다른 글
11번째 JCO, 그 현장을 가다. (0) | 2011.06.20 |
---|---|
JVM의 구조와 이해 - 작성중 (0) | 2011.05.31 |
제 11회 2011 한국자바개발자컨퍼런스 (0) | 2011.05.20 |
Parameter... 표현(동일한 파라메터를 여러개 받을 때, 자동으로 배열처리) (0) | 2011.05.09 |
java.io.Serializable , 직렬화, 멀티쓰레드에 사용되는 도메인 객체에 선언된다. (3) | 2011.05.04 |