Java NavigableSet
Java NavigableSet接口java.util.NavigableSet是Java SortedSet接口的子类型。因此," NavigableSet"的行为类似于" SortedSet",但是除了" SortedSet"的排序机制之外,还具有其他可用的导航方法集。在本文中,我将仔细研究JavaNavigableSet
的一些导航方法。
Java NavigableSet实现
在Java 6到13中,在java.util包中只有一个NavigableSet接口的实现:java.util.TreeSet类。 java.util.concurrent
包中有一个名为ConcurrentSkipListSet
的实现,但这超出了本教程的范围。
创建一个NavigableSet
要创建JavaNavigableSet
,我们必须创建实现NavigableSet
接口的类之一的实例。这是创建实现" NavigableSet"接口的" TreeSet"类实例的示例:
NavigableSet navigableSet = new TreeSet();
DescendSet()
descendingSet()方法返回一个NavigableSet,该元素的顺序与之相反。返回的"视图"由原始的" NavigableSet"支持,因此对降序集的更改也反映在原始集中。
这是一个简单的示例:
NavigableSet reverse = original.descendingSet();
DescendIterator()
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``tailSet()
方法示例:
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()方法允许我们传递两个参数,以划定要返回的视图集的边界。包括与第一个边界匹配的元素,但不包括与最后一个边界匹配的元素。这是一个JavaNavigableSet``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()"方法返回该集合中最小(最小)的元素,该元素大于或者等于作为参数传递给" ceiling()"方法的元素。这是一个JavaNavigableSet``ceiling()
示例:
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()
方法相反,这意味着它返回小于或者等于给定参数值的最大元素。这是一个JavaNavigableSet``floor()
示例:
NavigableSet original = new TreeSet(); original.add("1"); original.add("3"); original.add("5"); //floor will be "1". Object floor = original.floor("2");
higher()
" higher()"方法返回该集合中最小(最小)的元素,该元素大于(也不等于)作为参数传递给" higher()"方法的元素。这是一个JavaNavigableSet``higher()
示例:
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //higher will be "3". Object higher = original.higher("2");
lower()
lower()方法与high()方法相反,这意味着它返回小于(不等于)给定参数的最高元素。这是一个JavaNavigableSet``lower()
示例:
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
中的" first"元素。 "第一"表示根据集合的排序顺序的最小元素。这是一个JavaNavigableSet``pollFirst()
示例:
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //first is "1" Object first = original.pollFirst();
pollLast()
" pollLast()"方法返回并删除" NavigableSet"中的" last"元素。 "最后"表示根据集合中元素的排序顺序最大。这是一个JavaNavigableSet``pollLast()
示例:
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //last is "3" Object last = original.pollLast();