# Interface NavigableSet<E>

All Superinterfaces:
  `Collection<E>, Iterable<E>, Set<E>, SortedSet<E>`

All Known Implementing Classes:
  `TreeSet`

public interface NavigableSet<E> extends SortedSet<E>

NavigableSet is a SortedSet with navigation methods answering the closest matches for specified item.

Type parameter `E`: the type of element

##### Since

1.6

- ## Method Summary

  Modifier and Type
  Method
  Description
  `E`
  `ceiling(E e)`
  Answers the smallest element bigger than or equal to the specified one, or null if no such element.
  `Iterator<E>`
  `descendingIterator()`
  Answers a descending iterator of this set.
  `NavigableSet<E>`
  `descendingSet()`
  Answers a reverse order view of this set.
  `E`
  `floor(E e)`
  Answers the biggest element less than or equal to the specified one, or null if no such element.
  `NavigableSet<E>`
  `headSet(E end, boolean endInclusive)`
  Answers a NavigableSet of the specified portion of this set which contains elements less than (or equal to, depends on endInclusive) the end element.
  `E`
  `higher(E e)`
  Answers the smallest element bigger than the specified one, or null if no such element.
  `E`
  `lower(E e)`
  Answers the biggest element less than the specified one, or null if no such element.
  `E`
  `pollFirst()`
  Deletes and answers the smallest element, or null if the set is empty.
  `E`
  `pollLast()`
  Deletes and answers the biggest element, or null if the set is empty.
  `NavigableSet<E>`
  `subSet(E start, boolean startInclusive, E end, boolean endInclusive)`
  Answers a NavigableSet of the specified portion of this set which contains elements greater (or equal to, depends on startInclusive) the start element but less than (or equal to, depends on endInclusive) the end element.
  `NavigableSet<E>`
  `tailSet(E start, boolean startInclusive)`
  Answers a NavigableSet of the specified portion of this set which contains elements greater (or equal to, depends on startInclusive) the start element.

  ### Methods inherited from interface Collection

  `removeIf`

  ### Methods inherited from interface Iterable

  `forEach`

  ### Methods inherited from interface Set

  `add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray`

  ### Methods inherited from interface SortedSet

  `comparator, first, headSet, last, subSet, tailSet`

- ## Method Details

  - ### pollFirst

    E pollFirst()

    Deletes and answers the smallest element, or null if the set is empty.

    ###### Returns

    the smallest element, or null if the set is empty

  - ### pollLast

    E pollLast()

    Deletes and answers the biggest element, or null if the set is empty.

    ###### Returns

    the biggest element, or null if the set is empty

  - ### higher

    E higher(E e)

    Answers the smallest element bigger than the specified one, or null if no such element.

    ###### Parameters

    - `e`: the specified element

    ###### Returns

    Returns:

      the smallest element bigger than the specified one, or null if no such element

      ###### Throws

      - `ClassCastException`: if the element cannot be compared with the ones in the set

      - `NullPointerException`: if the element is null and the set can not contain null

  - ### ceiling

    E ceiling(E e)

    Answers the smallest element bigger than or equal to the specified one, or null if no such element.

    ###### Parameters

    - `e`: the specified element

    ###### Returns

    Returns:

      the smallest element bigger than or equal to the specified one, or null if no such element

      ###### Throws

      - `ClassCastException`: if the element cannot be compared with the ones in the set

      - `NullPointerException`: if the element is null and the set can not contain null

  - ### lower

    E lower(E e)

    Answers the biggest element less than the specified one, or null if no such element.

    ###### Parameters

    - `e`: the specified element

    ###### Returns

    Returns:

      the biggest element less than the specified one, or null if no such element

      ###### Throws

      - `ClassCastException`: if the element cannot be compared with the ones in the set

      - `NullPointerException`: if the element is null and the set can not contain null

  - ### floor

    E floor(E e)

    Answers the biggest element less than or equal to the specified one, or null if no such element.

    ###### Parameters

    - `e`: the specified element

    ###### Returns

    Returns:

      the biggest element less than or equal to the specified one, or null if no such element

      ###### Throws

      - `ClassCastException`: if the element cannot be compared with the ones in the set

      - `NullPointerException`: if the element is null and the set can not contain null

  - ### descendingIterator

    Iterator<E> descendingIterator()

    Answers a descending iterator of this set.

    ###### Returns

    the descending iterator

  - ### descendingSet

    NavigableSet<E> descendingSet()

    Answers a reverse order view of this set.

    ###### Returns

    the reverse order view

  - ### subSet

    NavigableSet<E> subSet(E start, boolean startInclusive, E end, boolean endInclusive)

    Answers a NavigableSet of the specified portion of this set which contains elements greater (or equal to, depends on startInclusive) the start element but less than (or equal to, depends on endInclusive) the end element. The returned NavigableSet is backed by this set so changes to one are reflected by the other.

    ###### Parameters

    - `start`: the start element

    - `startInclusive`: true if the start element is in the returned set

    - `end`: the end element

    - `endInclusive`: true if the end element is in the returned set

    ###### Returns

    the subset

    ###### Throws

    - `ClassCastException`: @throws ClassCastException when the start or end object cannot be compared with the elements in this set

    - `NullPointerException`: @throws NullPointerException when the start or end object is null and the set cannot contain null

    - `IllegalArgumentException`: @throws IllegalArgumentException when the start is bigger than end; or start or end is out of range and the set has a range

  - ### headSet

    NavigableSet<E> headSet(E end, boolean endInclusive)

    Answers a NavigableSet of the specified portion of this set which contains elements less than (or equal to, depends on endInclusive) the end element. The returned NavigableSet is backed by this set so changes to one are reflected by the other.

    ###### Parameters

    - `end`: the end element

    - `endInclusive`: true if the end element is in the returned set

    ###### Returns

    the subset

    ###### Throws

    - `ClassCastException`: @throws ClassCastException when the end object cannot be compared with the elements in this set

    - `NullPointerException`: @throws NullPointerException when the end object is null and the set cannot contain handle null

    - `IllegalArgumentException`: when end is out of range and the set has a range

  - ### tailSet

    NavigableSet<E> tailSet(E start, boolean startInclusive)

    Answers a NavigableSet of the specified portion of this set which contains elements greater (or equal to, depends on startInclusive) the start element. The returned NavigableSet is backed by this set so changes to one are reflected by the other.

    ###### Parameters

    - `start`: the start element

    - `startInclusive`: true if the start element is in the returned set

    ###### Returns

    the subset

    ###### Throws

    - `ClassCastException`: @throws ClassCastException when the start object cannot be compared with the elements in this set

    - `NullPointerException`: when the start object is null and the set cannot contain null

    - `IllegalArgumentException`: when start is out of range and the set has a range