ConcurrentNavigableMap — 내비게이션 가능한 동시성 맵

ConcurrentNavigableMap — 내비게이션 가능한 동시성 맵

ConcurrentNavigableMap<K,V>ConcurrentMapNavigableMap 연산(정렬된 키 범위 조회, 종점 포함/제외 뷰 등)을 더한 인터페이스예요. 정렬된 키 순서가 중요하면서도 동시성을 유지해야 할 때 사용해요.

출처: Java API Reference

본문

개념 이해하기

ConcurrentNavigableMapNavigableMap 연산을 지원하는 ConcurrentMap으로, 내비게이션 가능한 서브맵에도 재귀적으로 적용돼요.

public interface ConcurrentNavigableMap<K,V>
extends ConcurrentMap<K,V>, NavigableMap<K,V>

대표 구현체는 ConcurrentSkipListMap이에요. JDK 1.6부터 제공됐어요.

범위 뷰 메서드

ConcurrentNavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) — 키가 fromKey부터 toKey까지인 부분의 뷰를 반환해요. fromKeytoKey가 같으면 두 종점 모두 포함(fromInclusive·toInclusive가 둘 다 true)인 경우가 아니면 빈 맵이에요. 반환 맵은 이 맵에 백업돼요. 범위 밖의 키를 삽입하거나 범위 밖 종점의 서브맵을 만들려 하면 IllegalArgumentException.

  • ClassCastException, NullPointerException, IllegalArgumentException

ConcurrentNavigableMap<K,V> headMap(K toKey, boolean inclusive) — 키가 toKey보다 작은(포함이면 같거나 작은) 부분의 뷰를 반환해요.

ConcurrentNavigableMap<K,V> tailMap(K fromKey, boolean inclusive) — 키가 fromKey보다 큰(포함이면 같거나 큰) 부분의 뷰를 반환해요.

ConcurrentNavigableMap<K,V> subMap(K fromKey, K toKey)subMap(fromKey, true, toKey, false)과 동등해요(시작 포함, 끝 제외).

ConcurrentNavigableMap<K,V> headMap(K toKey) — 키가 toKey보다 엄격히 작은 뷰. headMap(toKey, false)와 동등.

ConcurrentNavigableMap<K,V> tailMap(K fromKey) — 키가 fromKey보다 크거나 같은 뷰. tailMap(fromKey, true)와 동등.

내비게이션·뷰 메서드

ConcurrentNavigableMap<K,V> descendingMap() — 매핑의 역순 뷰를 반환해요. Collections.reverseOrder(comparator())와 같은 순서를 가져요. m.descendingMap().descendingMap()m과 본질적으로 동등한 뷰예요.

NavigableSet<K> navigableKeySet() — 키의 NavigableSet 뷰를 반환해요. iterator는 오름차순으로 키를 반환해요. 요소 제거를 지원하되 add/addAll은 지원하지 않아요. iterator·spliterator는 약하게 일관적이에요.

NavigableSet<K> keySet()navigableKeySet()와 동등해요.

NavigableSet<K> descendingKeySet() — 키의 역순 NavigableSet 뷰를 반환해요. iterator는 내림차순으로 키를 반환해요.

더 알아보기 (Learn more)