Java Collections框架中的NavigableSet
接口提供了在集合元素之间导航的功能。
它被认为是SortedSet的一种。
实现NavigableSet的类
为了使用NavigableSet
接口的功能,我们需要使用实现NavigableSet
的TreeSet
类。

如何使用NavigableSet?
在Java中,我们必须导入java.util.NavigableSet
包才能使用NavigableSet
。导入包后,我们可以这样创建可导航的集合。
// SortedSet implementation by TreeSet class
NavigableSet<String> numbers = new TreeSet<>();
这里,我们使用TreeSet
类创建了一个名为numbers的可导航集合。
NavigableSet的方法
NavigableSet
被认为是SortedSet
的一种。这是因为NavigableSet
扩展了SortedSet
接口。
因此,所有SortedSet方法也可在NavigableSet中使用。要了解这些方法,请访问Java SortedSet。
但是,SortedSet
的某些方法(headSet()
、tailSet()
和subSet()
)在NavigableSet
中的定义不同。
让我们看看这些方法在NavigableSet
中的定义。
headSet(element, booleanValue)
headSet()
方法返回可导航集合中指定element(作为参数传递)之前的所有元素。
booleanValue 参数是可选的。它的默认值为 false
。
如果传递true
作为booleanValue,该方法将返回指定元素之前的所有元素,包括指定元素。
tailSet(element, booleanValue)
tailSet()
方法返回可导航集合中指定element(作为参数传递)之后的所有元素,包括指定元素。
booleanValue参数是可选的。其默认值为true
。
如果传递false
作为booleanValue,该方法将返回指定元素之后的所有元素,但不包括指定元素。
subSet(e1, bv1, e2, bv2)
subSet()
方法返回e1和e2之间的所有元素,包括e1。
bv1和bv2是可选参数。 bv1的默认值为true
,bv2的默认值为false
。
如果传递false
作为bv1,该方法将返回e1和e2之间的所有元素,不包括e1
。
如果传递true
作为bv2,该方法将返回e1和e2之间的所有元素,包括e1。
导航方法
NavigableSet
提供了各种方法,可用于在其元素上进行导航。
- descendingSet() - 反转集合中的元素顺序
- descendingIterator() - 返回一个可用于以相反顺序迭代集合的迭代器
- ceiling() - 返回大于或等于指定元素的元素中最小的那个
- floor() - 返回小于或等于指定元素的元素中最大的那个
- higher() - 返回大于指定元素的元素中最小的那个
- lower() - 返回小于指定元素的元素中最大的那个
- pollFirst() - 从集合中返回并删除第一个元素
- pollLast() - 从集合中返回并删除最后一个元素
要了解有关NavigableSet
的更多信息,请访问Java NavigableSet(官方Java文档)。
TreeSet类中NavigableSet的实现
import java.util.NavigableSet;
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
// Creating NavigableSet using the TreeSet
NavigableSet<Integer> numbers = new TreeSet<>();
// Insert elements to the set
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("NavigableSet: " + numbers);
// Access the first element
int firstElement = numbers.first();
System.out.println("First Number: " + firstElement);
// Access the last element
int lastElement = numbers.last();
System.out.println("Last Element: " + lastElement);
// Remove the first element
int number1 = numbers.pollFirst();
System.out.println("Removed First Element: " + number1);
// Remove the last element
int number2 = numbers.pollLast();
System.out.println("Removed Last Element: " + number2);
}
}
输出
NavigableSet: [1, 2, 3] First Element: 1 Last Element: 3 Removed First Element: 1 Removed Last Element: 3
现在我们已经了解了NavigableSet
接口,我们将学习如何使用TreeSet
类来实现它。
要了解有关TreeSet
的更多信息,请访问Java TreeSet。
另请阅读