NavigableMap — 탐색 메서드를 가진 정렬 맵

NavigableMap<K, V>주어진 검색 대상에 대해 가장 가까운 일치를 반환하는 탐색(navigation) 메서드로 확장된 SortedMap 이에요.

출처: Java API Reference

본문

public interface NavigableMap<K, V> extends SortedMap<K, V>

lowerEntry(K), floorEntry(K), ceilingEntry(K), higherEntry(K)는 각각 주어진 키보다 작은, 작거나 같은, 크거나 같은, 큰 키와 연관된 Map.Entry를 반환하고, 그런 키가 없으면 null을 반환해요. lowerKey/floorKey/ceilingKey/higherKey는 키만 반환해요. 이 모든 메서드는 순회가 아닌 위치 찾기를 위해 설계됐어요.

NavigableMap은 오름차순 또는 내림차순 키 순서로 접근·순회할 수 있어요. descendingMap()은 모든 관계·방향 메서드의 방향을 반전시킨 뷰를 반환해요. 오름차순 연산과 뷰의 성능이 내림차순보다 보통 빠르지만, 구현에 따라 다를 수 있어요.

subMap(K, boolean, K, boolean), headMap(K, boolean), tailMap(K, boolean)은 하한·상한이 포함인지 제외인지 나타내는 추가 인자를 받는다는 점에서 SortedMap의 동명 메서드와 달라요. firstEntry(), pollFirstEntry(), lastEntry(), pollLastEntry()는 각각 최소·최대 매핑을 반환하거나 제거하고 반환하며, 없으면 null을 반환해요.

탐색 메서드

  • lowerEntry(K) / lowerKey(K) — 주어진 키보다 엄격히 작은 최대 키의 매핑/키.
  • floorEntry(K) / floorKey(K) — 주어진 키보다 작거나 같은 최대 키.
  • ceilingEntry(K) / ceilingKey(K) — 주어진 키보다 크거나 같은 최소 키.
  • higherEntry(K) / higherKey(K) — 주어진 키보다 엄격히 큰 최소 키.
  • firstEntry() / lastEntry() — 최소/최대 키의 매핑(빈 맵이면 null).
  • pollFirstEntry() / pollLastEntry() — 최소/최대 매핑을 제거하고 반환(빈 맵이면 null).

반환된 Map.Entry는 호출 시점 매핑의 스냅샷을 나타내며, setValue로 기본 맵을 수정하는 것은 지원하지 않아요.

뷰 메서드

  • descendingMap() — 역순 뷰를 반환해요. reversed()와 동등해요.
  • navigableKeySet() — 오름차순 키의 NavigableSet 뷰를 반환해요.
  • descendingKeySet() — 내림차순 키의 NavigableSet 뷰를 반환해요.
  • subMap(K, boolean, K, boolean)fromKey~toKey 범위의 뷰를 반환해요.
  • headMap(K, boolean)toKey보다 작은(또는 inclusive면 같거나 작은) 키의 뷰를 반환해요.
  • tailMap(K, boolean)fromKey보다 큰(또는 같거나 큰) 키의 뷰를 반환해요.
  • 또한 SortedMapsubMap(K,K), headMap(K), tailMap(K)를 상속해요.

더 알아보기 (Learn more)