NavigableSet — 탐색 메서드를 가진 정렬 집합

NavigableSet<E>주어진 검색 대상에 대해 가장 가까운 일치를 보고하는 탐색(navigation) 메서드로 확장된 SortedSet 이에요.

출처: Java API Reference

본문

public interface NavigableSet<E> extends SortedSet<E>

lower(E), floor(E), ceiling(E), higher(E)는 각각 주어진 요소보다 작은, 작거나 같은, 크거나 같은, 큰 요소를 반환하고, 그런 요소가 없으면 null을 반환해요. NavigableSet은 오름차순 또는 내림차순으로 접근·순회할 수 있어요. descendingSet()은 모든 관계·방향 메서드의 방향을 반전시킨 뷰를 반환해요. 오름차순 연산과 뷰의 성능이 보통 더 빠르지만, 등급·균형 등 구현 특성에 따라 보장되지는 않아요.

이 인터페이스는 또한 최저·최고 요소를 반환하고 제거하는 pollFirst()pollLast()를 정의해요. subSet(E, boolean, E, boolean), headSet(E, boolean), tailSet(E, boolean)은 하한·상한이 포함인지 제외인지 나타내는 추가 인자를 받아요. NavigableSet의 부분 집합도 NavigableSet 인터페이스를 구현해야 해요.

null 요소를 허용하는 구현에서는 탐색 메서드의 반환값이 모호할 수 있어요. 그럴 때는 contains(null)을 확인해 구분할 수 있어요. Comparable 요소의 정렬 집합은 본질적으로 null을 허용하지 않아요.

subSet(E,E), headSet(E), tailSet(E)SortedSet을 반환하도록 명세됐지만, 확장·구현은 NavigableSet을 반환하도록 오버라이드하는 것이 권장돼요. Java Collections Framework의 멤버예요.

탐색 메서드

  • lower(E) — 주어진 요소보다 엄격히 작은 최대 요소.
  • floor(E) — 주어진 요소보다 작거나 같은 최대 요소.
  • ceiling(E) — 주어진 요소보다 크거나 같은 최소 요소.
  • higher(E) — 주어진 요소보다 엄격히 큰 최소 요소.
  • pollFirst() — 최저 요소를 반환하고 제거(빈 집합이면 null).
  • pollLast() — 최고 요소를 반환하고 제거(빈 집합이면 null).
  • removeFirst() / removeLast() — 첫/마지막 요소를 제거하고 반환해요.

순회와 뷰

  • iterator() — 오름차순 반복자를 반환해요.
  • descendingSet() — 역순 뷰를 반환해요. reversed()와 동등해요.
  • descendingIterator() — 내림차순 반복자를 반환해요.
  • subSet(E, boolean, E, boolean) / headSet(E, boolean) / tailSet(E, boolean) — 범위 뷰를 반환해요.
  • SortedSetsubSet(E,E), headSet(E), tailSet(E)도 상속해요.

더 알아보기 (Learn more)