📜  Java NavigableSet接口(1)

📅  最后修改于: 2023-12-03 15:15:57.280000             🧑  作者: Mango

Java NavigableSet接口

Java中的NavigableSet接口继承自SortedSet接口,它拓展了SortedSet接口,提供了一些额外的基于导航的方法,例如获取某个元素的前驱和后继。

NavigableSet接口中定义的方法可以让我们更容易地操作一个排序的集合,并且它可以快速的定位到集合中的任何元素。在Java 6中,该接口首次被引入,是Java集合框架的重要部分。

NavigableSet接口的主要方法

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的实现类

NavigableSet接口的实现类包括:

  • TreeSet:它是一个基于TreeMap实现NavigableSet的类。
  • ConcurrentSkipListSet:它是基于跳表(Skip List)实现的高效Set集合,可以支持高并发环境。
  • CopyOnWriteArraySet:它是基于 CopyOnWriteArrayList 实现的Set集合,因此它是一个线程安全(Thread-Safe)的Set集合,可以支持高并发环境。
总结

Java NavigableSet接口提供了一些基于导航的方法,能够方便地获取集合中的某些元素,使得对集合的操作更加容易和灵活。NavigableSet接口的实现类有三种,可以根据不同的需求选择不同的实现类。