Java集合-NavigableSet

tech2025-05-19  9

NavigableSetjava.util.NavigableSet)接口是 SortedSet 接口的一个子接口。因此, NavigableSet和SortedSet很相似,但是,除了SortedSet的排序机制之外,还提供了一组额外的导航方法,本篇文章将讲述NavigableSet的这些导航方法。

NavigableSet的实现

Java 6 13NavigableSet java.util包中只有一个实现类java.util.TreeSet类,java.util.concurrent中也有一个实现ConcurrentSkipListSet,本文暂时不讲述。

创建NavigableSet

创建NavigableSet 必须创建 NavigableSet接口的一个实例,我们使用 TreeSet 

  NavigableSet navigableSet = new TreeSet();

descendingSet()

descendingSet()方法的作用是:返回一个NavigableSet,其中元素的顺序与原来的NavigableSet相反,返回的“view”由原始NavigableSet支持,因此对降序集的更改也会反映在原始集合中,下面是例子:

  NavigableSet reverse = original.descendingSet();

descendingIterator()

descendingIterator()方法允许方向迭代 NavigableSet (SortedSet一样) 中的元素,而不改变其内部本身的元素:

  Iterator reverse = original.descendingIterator();   

headSet()

headSet()方法返回 NavigableSet的一个视图,这里面的元素小于给定的元素 

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //this headset will contain "1" and "2" SortedSet headset = original.headSet("3"); //this headset will contain "1", "2", and "3" because "inclusive"=true NavigableSet headset = original.headSet("3", true);

 

tailSet()

tailSet()方法和 headSet()方法很相似,除了一点是大于等于给点的元素:

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //this tailSet will contain "2" and "3" SortedSet tailSet = original.tailSet("2"); //this tailSet will contain "3" only because "inclusive"=false NavigableSet tailSet = original.tailSet("2", false);  

subSet()

subSet()方法允许传入两个参数,返回一个限定范围的视图,这个视图包括第一个参数,不包括第二个参数:

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); original.add("4"); original.add("5"); //this subset will contain "2" and "3" SortedSet    subset  = original.subSet("2", "4"); //this subset will contain "2", "3" and "4" because //    fromInclusive=true, and toInclusive=true NavigableSet subset = original.subSet("2", true, "4", true);

 

ceiling()

ceiling()方法返回此set中大于或等于给定元素的最小元素

NavigableSet original = new TreeSet(); original.add("1"); original.add("3"); original.add("5"); //ceiling will be "3". Object ceiling = original.ceiling("2");

 

floor()

floor()方法和 ceiling()方法对应,返回此集合中小于或等于给定元素的最大元素

NavigableSet original = new TreeSet(); original.add("1"); original.add("3"); original.add("5"); //floor will be "1". Object floor = original.floor("2");

 

higher()

higher()方法返回此set中大于给定元素的最小元素 

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //higher will be "3". Object higher = original.higher("2");

 

lower()

lower()方法和higher()方法相对应,返回此set中小于给定元素的最大元素

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //lower will be "1" Object lower = original.lower("2");

 

pollFirst()

pollFirst()返回并且移除 NavigableSet中的第一个元素,如果集合是空返回null: 

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //first is "1" Object first = original.pollFirst();

 

pollLast()

pollLast()返回和移除 NavigableSet中的最后一个元素:

NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //last is "3" Object last = original.pollLast();

 

参考:1. https://blog.csdn.net/cgsyck/article/details/108377431

          2. http://tutorials.jenkov.com/java-collections/navigableset.html

 

最新回复(0)