Java NavigableSet

时间:2020-01-09 10:35:48  来源:igfitidea点击:

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();