# Interface NavigableSet<E>

Type Parameters:
  `E` - the type of element

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.

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 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:
      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:
      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:
      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:
      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` - when the start or end object cannot be compared with the elements in this set
      `NullPointerException` - when the start or end object is null and the set cannot contain null
      `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` - when the end object cannot be compared with the elements in this set
      `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` - 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