📜  Java NavigableSet接口

📅  最后修改于: 2020-09-26 15:09:57             🧑  作者: Mango

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

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

它被视为SortedSet的一种。


实现NavigableSet的类

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

TreeSet类实现NavigableSet接口。


如何使用NavigableSet?

在Java中,我们必须导入java.util.NavigableSet包才能使用NavigableSet 。导入包后,将按照以下方法创建可导航集。

// SortedSet implementation by TreeSet class
NavigableSet numbers = new TreeSet<>();

在这里,我们创建了一个可导航的集合,命名为TreeSet类的数字


NavigableSet的方法

NavigableSet被视为SortedSet 。这是因为NavigableSet扩展了SortedSet接口。

因此,所有的SortedSet方法在NavigableSet中也可用。要了解这些方法的方式,请访问Java SortedSet。

但是,在NavigableSet ,对SortedSet某些方法( headSet()tailSet()subSet() )进行了不同的定义。

让我们看看如何在NavigableSet中定义这些方法。


headSet(element,booleanValue)

headSet()方法在指定元素 (作为参数传递)之前返回可导航集中的所有元素。

booleanValue参数是可选的。其默认值为false

如果将true作为booleanValue传递,则该方法返回指定元素之前的所有元素,包括指定元素。


tailSet(element,booleanValue)

tailSet()方法在包含指定元素的指定元素 (作为参数传递)之后返回可导航集中的所有元素。

booleanValue参数是可选的。其默认值为true

如果将false作为booleanValue传递,则该方法返回指定元素之后的所有元素,而不包括指定元素。


subSet(e1,bv1,e2,bv2)

subSet()方法返回e1e2之间的所有元素,包括e1

bv1bv2是可选参数。 bv1的默认值为true ,而bv2的默认值为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 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

要了解有关TreeSet更多信息,请访问Java TreeSet。


既然我们了解了NavigableSet接口,我们将使用TreeSet类学习其实现。