Java SE 6 에서의 Collections Framework 에 대한 변경의 개요 - xrath.com 에서 번역됨

# Collections Framework 의 확장 기능

이 페이지에서는, Java SE 6 의 collections framework 의 확장 기능에 대해 설명합니다.

이 릴리스에서는, 변경한 API 의 수가 5.0 보다 적고, 스펙의 정확도와 명확성에 의해 중점이 놓여져 있습니다. 이 때문에, 구릴리스의 프로그램을 작성하는 경우에서도, Java SE 6 의 스펙을 참조하는 것을 추천합니다.

API 변경의 주된 테마는컬렉션의 쌍방향 액세스의 개선이었습니다.

다음의 새로운 컬렉션 인터페이스가 제공됩니다.

- `Deque` - 이중 끝 큐. 양단에서의 요소의 삽입과 삭제를 지원합니다. `Queue` 인터페이스를 확장합니다.
- `BlockingDeque` - 요소를 꺼낼 때, deque 가 빈 상태(empty)이 아니게 될 때까지 대기하거나 요소를 소트 할 경우에 deque 로 스페이스를 이용할 수 있게 될 때까지 대기하는 조작을 실시하는 `Deque`. `Deque` 및 `BlockingQueue` 인터페이스를 확장합니다 (이 인터페이스는,`java.util.concurrent` 의 일부).
- `NavigableSet` - 지정의 검색 타겟으로 가장 가까운 일치 내용을 보고하는 네비게이션 메소드로 확장된 `SortedSet`. 승순 또는 내림차순으로,`NavigableSet` 에 액세스 하거나`NavigableSet` 를 횡단(traverse) 하거나 할 수 있습니다. 이 인터페이스는 `SortedSet` 인터페이스의 대신입니다.
- `NavigableMap` - 지정의 검색 타겟으로 가장 가까운 일치 내용을 돌려주는 네비게이션 메소드로 확장된 `SortedMap`. 승순 또는 내림차순의 키 순서로,`NavigableMap` 가 액세스 하거나 횡단(traverse) 하거나 할 수 있습니다. 이 인터페이스는 `SortedMap` 인터페이스의 대신입니다.
- `ConcurrentNavigableMap` - `NavigableMap` 이기도 한 `ConcurrentMap` (이 인터페이스는,`java.util.concurrent` 의 일부).

다음의 고정 구현 클래스가 추가되었습니다.

- `ArrayDeque` - `Deque`인터페이스의 사이즈 변경이 가능한 효율적 배열의 구현.
- `ConcurrentSkipListSet` - `NavigableSet` 인터페이스의 병행 스케이라브르스킵리스트 구현.
- `ConcurrentSkipListMap` - `ConcurrentNavigableMap` 인터페이스의 병행 스케이라브르스킵리스트 구현.
- `LinkedBlockingDeque` - 링크된 노드로 지원되어 임의에 의해 결합된, 확장 가능한 병렬형 FIFO Blocking Deque.
- `AbstractMap.SimpleEntry` - `Map.Entry` 의 간이 가변 구현.
- `AbstractMap.SimpleImmutableEntry` - `Map.Entry` 의 간이 불변 구현.

다음의 기존의 클래스가, 새로운 인터페이스를 구현하기 위해서 개량되었습니다.

- `LinkedList` - `Deque` 인터페이스를 구현하기 위해서 개량.
- `TreeSet` - `NavigableSet` 인터페이스를 구현하기 위해서 개량.
- `TreeMap` - `NavigableMap` 인터페이스를 구현하기 위해서 개량.

새로운 2 개의 메소드가 `Collections` 유틸리티 클래스에 추가되었습니다.

- `newSetFromMap(Map)` - 범용의 `Set` 구현을 범용의 `Map` 구현으로부터 작성합니다.

  `IdentityHashSet` 클래스는 존재합니다만, 대신에 다음과 같이 사용합니다.

      Set<Object> identityHashSet=
          Collections.newSetFromMap(
              new IdentityHashMap<Object, Boolean>());

- `asLifoQueue(Deque)` - LIFO (Last in first out) `큐` 로서`Deque` 의 뷰를 돌려줍니다.

이번,`Arrays` 유틸리티 클래스에는,`copyOf` 와 `copyOfRange` 메소드가 추가되었습니다. 이것들은, 모든 형태의 배열에 대해서, 부분 배열의 사이즈 변경, 절약해 카피를 효과적으로 실행할 수 있습니다.

변경전:

    int[] newArray = new int[newLength];
    System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);

변경 후:

    int[] newArray = Arrays.copyOf(a, newLength);

Copyright © 2006 Sun Microsystems, Inc. All Rights Reserved. 코멘트의 송부처:collections-comments@java.sun.com | Java Software