NavigableSet表示中的可导航集 集合框架 .NavigableSet接口继承自 分类数据集接口 。它的行为类似于SortedSet,但除了SortedSet的排序机制外,我们还有可用的导航方法。 例如,与SortedSet中定义的顺序相比,NavigableSet接口可以以相反的顺序导航集合。可以按升序或降序访问和遍历NavigableSet。实现这个接口的类是, 有序树 和 ConcurrentSkipListSet
这里,E是由该集合维护的元素类型。
所有高级界面:
所有已知的实现类:
宣言: NavigableSet被宣布为
公共接口NavigableSet
扩展了SortedSet
创建NavigableSet对象
由于NavigableSet是一个接口,因此无法创建NavigableSet类型的对象。为了创建一个对象,我们总是需要一个扩展这个列表的类。而且,在Java 1.5中引入泛型之后,可以限制可存储在NavigableSet中的对象类型。这种类型的安全设置可以定义为:
//Obj是要存储在NavigableSet中的对象类型
NavigableSet
set=新树集 ();
例子:
JAVA
// Java program to demonstrate // the working of NavigableSet import java.util.NavigableSet; import java.util.TreeSet; public class NavigableSetDemo { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); ns.add( 0 ); ns.add( 1 ); ns.add( 2 ); ns.add( 3 ); ns.add( 4 ); ns.add( 5 ); ns.add( 6 ); // Get a reverse view of the navigable set NavigableSet<Integer> reverseNs = ns.descendingSet(); // Print the normal and reverse views System.out.println( "Normal order: " + ns); System.out.println( "Reverse order: " + reverseNs); NavigableSet<Integer> threeOrMore = ns.tailSet( 3 , true ); System.out.println( "3 or more: " + threeOrMore); System.out.println( "lower(3): " + ns.lower( 3 )); System.out.println( "floor(3): " + ns.floor( 3 )); System.out.println( "higher(3): " + ns.higher( 3 )); System.out.println( "ceiling(3): " + ns.ceiling( 3 )); System.out.println( "pollFirst(): " + ns.pollFirst()); System.out.println( "Navigable Set: " + ns); System.out.println( "pollLast(): " + ns.pollLast()); System.out.println( "Navigable Set: " + ns); System.out.println( "pollFirst(): " + ns.pollFirst()); System.out.println( "Navigable Set: " + ns); System.out.println( "pollFirst(): " + ns.pollFirst()); System.out.println( "Navigable Set: " + ns); System.out.println( "pollFirst(): " + ns.pollFirst()); System.out.println( "Navigable Set: " + ns); System.out.println( "pollFirst(): " + ns.pollFirst()); System.out.println( "pollLast(): " + ns.pollLast()); } } |
Normal order: [0, 1, 2, 3, 4, 5, 6]Reverse order: [6, 5, 4, 3, 2, 1, 0]3 or more: [3, 4, 5, 6]lower(3): 2floor(3): 3higher(3): 4ceiling(3): 3pollFirst(): 0Navigable Set: [1, 2, 3, 4, 5, 6]pollLast(): 6Navigable Set: [1, 2, 3, 4, 5]pollFirst(): 1Navigable Set: [2, 3, 4, 5]pollFirst(): 2Navigable Set: [3, 4, 5]pollFirst(): 3Navigable Set: [4, 5]pollFirst(): 4pollLast(): 5
在NavigableSet上执行各种操作
由于NavigableSet是一个接口,因此它只能与实现该接口的类一起使用。TreeSet是实现NavigableSet接口的类。现在,让我们看看如何在TreeSet上执行一些常用的操作。
1.添加元素: 为了向NavigableSet添加元素,我们可以使用 添加() 方法但是,插入顺序不会保留在树集中。在内部,每个元素的值都会按升序进行比较和排序。我们需要注意的是,不允许重复元素,并且忽略所有重复元素。此外,NavigableSet不接受空值。
JAVA
// Java code to demonstrate // adding of elements in // NavigableSet import java.util.*; import java.io.*; class NavigableSetDemo { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add( "A" ); ts.add( "B" ); ts.add( "C" ); ts.add( "A" ); System.out.println(ts); } } |
输出:
[A, B, C]
2.访问元素: 在添加元素之后,如果我们希望访问这些元素,我们可以使用内置方法,比如contains()、first()、last()等。
JAVA
// Java program to access // the elements of NavigableSet import java.util.*; import java.io.*; class NavigableSetDemo { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add( "A" ); ts.add( "B" ); ts.add( "C" ); ts.add( "A" ); System.out.println( "Navigable Set is " + ts); String check = "D" ; // Check if the above string exists in // the NavigableSet or not System.out.println( "Contains " + check + " " + ts.contains(check)); // Print the first element in // the NavigableSet System.out.println( "First Value " + ts.first()); // Print the last element in // the NavigableSet System.out.println( "Last Value " + ts.last()); } } |
输出:
Navigable Set is [A, B, C]Contains D falseFirst Value ALast Value C
3.删除值: 可以使用remove()、pollFirst()和pollLast()方法从NavigableSet中删除这些值。
JAVA
// Java Program to remove the // elements from NavigableSet import java.util.*; import java.io.*; class NavigableSetDemo { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add( "A" ); ts.add( "B" ); ts.add( "C" ); ts.add( "B" ); ts.add( "D" ); ts.add( "E" ); System.out.println( "Initial TreeSet " + ts); // Removing the element b ts.remove( "B" ); System.out.println( "After removing element " + ts); // Remove the First element of TreeSet ts.pollFirst(); System.out.println( "After the removal of First Element " + ts); // Remove the Last element of TreeSet ts.pollLast(); System.out.println( "After the removal of Last Element " + ts); } } |
输出:
Initial TreeSet [A, B, C, D, E]After removing element [A, C, D, E]After the removal of First Element [C, D, E]After the removal of Last Element [C, D]
4.遍历NavigableSet: 有多种方法可以迭代NavigableSet。最著名的是使用 增强的for循环。
JAVA
// Java program to iterate // through NavigableSet import java.util.*; import java.io.*; class NavigableSetDemo { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add( "C" ); ts.add( "D" ); ts.add( "E" ); ts.add( "A" ); ts.add( "B" ); ts.add( "Z" ); // Iterating though the NavigableSet for (String value : ts) System.out.print(value + ", " ); System.out.println(); } } |
输出:
A, B, C, D, E, Z,
通航集方法
以下是NavigableSet界面中的方法。
方法 |
描述 |
---|---|
天花板(E) | 返回此集合中大于或等于给定元素的最小元素,如果没有此类元素,则返回null。 |
下降迭代器() | 按降序返回此集合中元素的迭代器。 |
下降集() | 返回此集合中包含的元素的逆序视图。 |
地板(E) | 返回此集合中小于或等于给定元素的最大元素,如果没有此类元素,则返回null。 |
头戴式耳机(E) | 返回此集合中元素严格小于toElement的部分的视图。 |
头戴式耳机(E-toElement,含布尔值) | 返回此集合中元素小于(或等于,如果inclusive为true)toElement的部分的视图。 |
较高的(E) | 返回此集合中严格大于给定元素的最小元素,如果没有此类元素,则返回null。 |
迭代器() | 按升序返回此集合中元素的迭代器。 |
降低(E) | 返回该集合中严格小于给定元素的最大元素,如果没有此类元素,则返回null。 |
pollFirst() | 检索并删除第一个(最低)元素,如果此集合为空,则返回null。 |
pollLast() | 检索并删除最后一个(最高)元素,如果此集合为空,则返回null。 |
返回此集合中元素范围从Element到toElement的部分的视图。 | |
子集(E from元素,E toElement) | 返回此集合中元素范围从fromElement,inclusive到toElement,exclusive的部分的视图。 |
尾翼(E from元素) | 返回此集合中元素大于或等于fromElement的部分的视图。 |
尾翼(E from元素,包含布尔值) | 返回此集合中元素大于(或等于,如果inclusive为true)fromElement的部分的视图。 |
方法继承自java接口。util。分类集
方法 |
描述 |
---|---|
比较器() | 此方法返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的自然排序,则返回null。 |
第一() | 此方法返回此集合中的第一个(最低)元素。 |
最后() | 此方法返回集合中存在的最后一个(最高)元素。 |
拆分器() | 在该排序集中的元素上创建拆分器。 |
方法继承自java接口。util。设置
方法 |
描述 |
---|---|
添加(元素) | 此方法用于向集合中添加特定元素。仅当指定的元素在集合中不存在时,函数才会添加该元素;否则,如果元素在集合中已存在,函数将返回False。 |
addAll(收藏) | 此方法用于将上述集合中的所有元素附加到现有集合中。元素是随机添加的,不遵循任何特定顺序。 |
清除() | 此方法用于删除集合中的所有元素,但不删除集合。集合的引用仍然存在。 |
包含(元素) | 此方法用于检查集合中是否存在特定元素。 |
CONTANSALL(收藏) |
此方法用于检查集合是否包含给定集合中的所有元素。 如果集合包含所有元素,则此方法返回true;如果缺少任何元素,则返回false。 |
等于 | 将指定的对象与此集合进行相等性比较。 |
hashCode() | 此方法用于获取集合的此实例的hashCode值。它返回一个整数值,该整数值是集合的这个实例的hashCode值。 |
isEmpty() | 此方法用于检查NavigableSet是否为空。 |
移除(元素) | 此方法用于从集合中删除给定元素。如果集合中存在指定的元素,则此方法返回True,否则返回False。 |
removeAll(收藏) | 此方法用于从集合中删除集合中存在的所有元素。如果此集合因调用而更改,则此方法返回true。 |
保留(收藏) | 此方法用于保留给定集合中提到的集合中的所有元素。如果此集合因调用而更改,则此方法返回true。 |
大小() | 此方法用于获取集合的大小。这将返回一个表示元素数的整数值。 |
toArray() | 此方法用于形成与集合相同元素的数组。 |
托雷(T[]a) | 返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。 |
在java接口中声明的方法。util。收集
方法 | 描述 |
---|---|
parallelStream() | 返回一个可能与此集合并行的流作为其源。 |
移除(谓词过滤器) | 删除此集合中满足给定谓词的所有元素。 |
流() | 返回以此集合为源的连续流。 |
托雷(IntFunction |
使用提供的生成器函数分配返回的数组,返回包含此集合中所有元素的数组。 |
在java接口中声明的方法。lang.Iterable
方法 | 描述 |
---|---|
弗雷奇(消费者行动) | 对Iterable的每个元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 |
本文由 普拉蒂克·阿加瓦尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。