Java NavigableSet 接口

Java Collections框架中的NavigableSet接口提供了在集合元素之间导航的功能。

它被认为是SortedSet的一种。


实现NavigableSet的类

为了使用NavigableSet接口的功能,我们需要使用实现NavigableSetTreeSet类。

The TreeSet class implements the NavigableSet interface.

如何使用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()方法返回e1e2之间的所有元素,包括e1

bv1bv2是可选参数。 bv1的默认值为truebv2的默认值为false

如果传递false作为bv1,该方法将返回e1e2之间的所有元素,不包括e1

如果传递true作为bv2,该方法将返回e1e2之间的所有元素,包括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


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战