Java NavigableSet 接口

NavigableSet 扩展了 SortedSet 接口,提供了几个导航方法报告与搜索目标最接近的匹配。在本教程中,我们将通过示例学习 Java NavigableSet 接口及其用法。

在本教程中,我们将通过示例学习 Java NavigableSet 接口及其用法。

Java 集合框架的 NavigableSet 扩展了 SortedSet 接口,提供了几个导航方法报告与搜索目标最接近的匹配。

TreeSet 类是 NavigableSet 接口的一个实现类,我们可以使用 TreeSet 类构造 NavigableSet 对象。

TreeSet 类实现 NavigableSet 接口

在程序中导入 java.util.NavigableSet 类和 java.util.TreeSet 就可以创建对象了:

NavigableSet<String> numbers = new TreeSet<>();

在这里,我们使用 TreeSet 类创建了一个名为 numbersNavigableSet 对象。

NavigableSet 接口扩展了 SortedSet 接口,拥有 SortedSet 的所有行为。

要了解如何使用 SortedSet 的方法,请访问 Java SortedSet

但是, NavigableSet 重载了 SortedSet 中的一些方法,比如: headSet() , tailSet()subSet()

让我们看看 NavigableSet 中的这些方法。

headSet(toElement, inclusive);

headSet(toElement, inclusive) 方法返回由 toElement 元素之前的所有元素组成的 NavigableSet 集合。

inclusive 参数如果为 false,该方法返回的集合中不包括指定元素;如果为 true,该方法返回的集合中包括指定元素。

tailSet(fromElement, inclusive)

tailSet(fromElement, inclusive) 方法返回由 fromElement 元素之后的所有元素组成的 NavigableSet 集合。

inclusive 参数如果为 false,该方法返回的集合中不包括指定元素;如果为 true,该方法返回的集合中包括指定元素。

subSet(fromElement, fromInclusive, toElement, toInclusive)

subSet(fromElement, fromInclusive, toElement, toInclusive) 方法返回 fromElement 元素和 toElement 元素之间的所有元素组成的 NavigableSet 集合。

如果 fromInclusivetrue,则返回的集合中包括 fromElement 元素, 为 false 则不包括 fromElement 元素。

如果 toInclusivetrue,则返回的集合中包括 toElement 元素, 为 false 则不包括 toElement 元素。

导航方法

NavigableSet 提供了几个用于导航元素的方法:

  • descendingSet() - 反转集合中元素的顺序
  • descendingIterator() - 返回一个迭代器,可用于以相反的顺序迭代集合
  • ceiling() - 返回大于或等于指定元素的元素中的最低元素
  • floor() - 返回小于或等于指定元素的元素中最大的元素
  • higher() - 返回大于指定元素的元素中最低的元素
  • lower() - 返回小于指定元素的元素中最大的元素
  • pollFirst() - 返回并移除集合中的第一个元素
  • pollLast() - 返回并移除集合中的最后一个元素
import java.util.NavigableSet;
import java.util.TreeSet;

public class Main {
  public static void main(String[] args) {
    NavigableSet<Integer> numbers = new TreeSet<>();

    // 插入元素
    numbers.add(1);
    numbers.add(2);
    numbers.add(3);
    System.out.println("NavigableSet: " + numbers);

    // 访问第一个元素
    int firstElement = numbers.first();
    System.out.println("First Number: " + firstElement);

    // 访问最后一个元素
    int lastElement = numbers.last();
    System.out.println("Last Element: " + lastElement);

    // 删除第一个元素
    int number1 = numbers.pollFirst();
    System.out.println("Removed First Element: " + number1);

    // 删除最右一个元素
    int number2 = numbers.pollLast();
    System.out.println("Removed Last Element: " + number2);
  }
}

输出

NavigableSet: [1, 2, 3]
First Number: 1
Last Element: 3
Removed First Element: 1
Removed Last Element: 3

现在我们了解了 NavigableSet 接口,我们下面要学习它的实现类 TreeSet