Collection
Collection: 가장 상위 인터페이스이다.
- Set : 중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다.
- SortedSet : 오름차순을 갖는 Set 인터페이스이다.
- List : 순서가 있는 집합을 처리하기 위한 인터페이스이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 Vector가 있다.
- Queue : 여러 개의 객체를 처리하기 전에 담아서 처리할 때 사용하기 위한 인터페이스이다. 기본적으로 FIFO를 따른다.
- Map : Map은 키와 값의 쌍으로 구성된 객체의 집합을 처리하기 위한 인터페이스이다. 이 객체는 중복되는 키를 허용하지 않는다.
- SortedMap : 키를 오름차순으로 정렬하는 Map 인터페이스이다.
Set
- HashSet : 데이터를 해쉬 테이블에 담는 클래스로 순서 없이 저장된다.
- TreeSet : red-black이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다.
- LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다.
List
- Vector : 크기를 객체 생성시 지정할 필요가 없는 배열 클래스이다.
- ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.
- LinkedList : ArrayList와 동일 하지만, Queue 인터페이스를 구현했기 때문에 FIFO큐 작업을 수행한다.
Map
- Hashtable : 데이터를 해쉬 테이블에 담는 클래스이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용하기 바란다.
- TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.
- LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트라는 방식을 사용하여 데이터를 담는다는 점만 다르다.
- PriorityQueue : 큐에 추가된 순서와 상관없이 먼저 생성한 객체가 먼저 나오도록 되어 있는 큐이다.
- LinkedBlockingQueue : 선택적으로 저장할 데이터의 크기를 정할 수도 있는 FIFO기반의 링크 노드를 사용하는 블로킹 큐이다.
- ArrayBlockingQueue : 저장된는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐이다.
- PriorityBlockingQueue : 저장되는 데이터의 크기가 정해저 있지 않고, 객체의 생성 순서에 따라서 순서가 저장되는 블로킹 큐이다.
- DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐이다.
- SynchronousQueue : put() 메소드를 호출하면, 다른 스레드에서 take()메소드가 호출될 때까지 대기하도록 되어 있는 큐이다. 이 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메소드는 0이가 null을 리턴한다.
Iterator
- boolean hasNext() : 만약 요소가 더 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
- Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
- void remove() : 현재 요소를 삭제한다. 만약 next() 메소드가 호출되기 전에 remove() 메소드의 호출이 시도된다면 IllegalState-Exception 예외를 던진다.
- void add(Object obj) : 리스트에서 다음의 next() 메소드 호출이 반환할 요소 앞에 obj 를 삽입한다.
- boolean hasNext() : 만약 다음 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
- boolean hasPrevious() : 만약 이전 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
- Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
- int nextIndex() : 다음 요소의 위치를 반환한다. 만약 다음 요소가 존재하지 않으면, 리스트의 크기를 반환한다.
- Object previous() : 이전 요소를 반환한다. 만약 이전 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
- int previousIndex() : 이전 요소의 위치를 반환한다. 만약 이전 요소가 존재하지 않으면, -1을 반환한다.
- void remove() : 리스트에서 현재 요소를 삭제한다. 만약 next()나 previous() 메소드가 호출되기 전에 remove() 메소드가 호출되면 Illegal-StateException 예외를 던진다.
- void set(Object obj) : 현재 요소에 obj를 할당한다. 할당된 obj는 next()나 previous() 메소드를 호출할 때 마지막으로 반환되는 요소이다.
: 키/값 기억 장소를 표현하고 마치 Map 같이 동작하는 추상 클래스이다. 키와 값이 주어지면, Dictionay 객체에 값을 저장할 수 있다. 값이 한번 저장되면, 키를 사용하여 그 값을 가져올 수 있다. 따라서, 마치 맵과 같이 dictionary를 키/값 쌍의 리스트로 생각할 수 있다. 비록 자바 2에서 실제로 사장되지는 않았지만, dictionary는 Map으로 대체되기 때문에, 거의 사용되지 않는 클래스로 분류된다. 그러나, Dictionary는 여전히 사용되고 있다.
Hashtable
: 원래 java.util의 일부분이고 Dictionary의 실제 구현이다. 그러나, 자바 2에서는 Map 인터페이스를 구현하기 위해서 Hashtable이 재작성되었다. 따라서, Hash-table은 이제 콜렉션 프레임워크로 통합되었다. Hashtable은 HashMap과 비슷하지만, 동기화를 제공한다.
Properties
: Hashtable의 하위클래스이다. Properties는 키가 String이고, 값도 String인 값들의 리스트를 유지하기 위해 사용된다. Properties클래스는 많은 다른 자바 클래스들에 의해 사용된다.
댓글
댓글 쓰기