📅  最后修改于: 2023-12-03 15:15:57.280000             🧑  作者: Mango
Java中的NavigableSet接口继承自SortedSet接口,它拓展了SortedSet接口,提供了一些额外的基于导航的方法,例如获取某个元素的前驱和后继。
NavigableSet接口中定义的方法可以让我们更容易地操作一个排序的集合,并且它可以快速的定位到集合中的任何元素。在Java 6中,该接口首次被引入,是Java集合框架的重要部分。
NavigableSet
继承了SortedSet
接口,并且增加了以下方法:
E ceiling(E e)
: 返回集合中大于或等于给定元素的最小元素(即集合中比它大的最小元素),如果不存在这样的元素,则返回 null。Iterator<E> descendingIterator()
: 返回此 set 中以逆向顺序遍历元素的迭代器。NavigableSet<E> descendingSet()
: 返回此 set 中的元素以逆序进行排序的视图。E floor(E e)
: 返回集合中小于或等于给定元素的最大元素(即集合中比它小的最大元素),如果不存在这样的元素,则返回 null。NavigableSet<E> headSet(E toElement, boolean inclusive)
: 返回此 set 的部分视图,其元素都严格小于 toElement。如果 inclusive 为 true,则返回的视图中包括 toElement。E higher(E e)
: 返回集合中严格大于给定元素的最小元素,如果不存在这样的元素,则返回 null。E lower(E e)
: 返回集合中严格小于给定元素的最大元素,如果不存在这样的元素,则返回 null。E pollFirst()
: 移除并返回第一个(最低)元素;如果此 set 为空,则返回 null。E pollLast()
: 移除并返回最后一个(最高)元素;如果此 set 为空,则返回 null。NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
: 返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。如果 fromInclusive 为 true,则包括 fromElement;否则不包括。如果 toInclusive 为 true,则包括 toElement;否则不包括。NavigableSet<E> tailSet(E fromElement, boolean inclusive)
: 返回此 set 的部分视图,其元素都大于或等于 fromElement。如果 inclusive 为 true,则返回的视图中包括 fromElement。NavigableSet
接口的实现类包括:
TreeSet
:它是一个基于TreeMap实现NavigableSet的类。ConcurrentSkipListSet
:它是基于跳表(Skip List)实现的高效Set集合,可以支持高并发环境。CopyOnWriteArraySet
:它是基于 CopyOnWriteArrayList 实现的Set集合,因此它是一个线程安全(Thread-Safe)的Set集合,可以支持高并发环境。Java NavigableSet接口提供了一些基于导航的方法,能够方便地获取集合中的某些元素,使得对集合的操作更加容易和灵活。NavigableSet接口的实现类有三种,可以根据不同的需求选择不同的实现类。