Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java NavigableSet 接口

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

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

它被视为SortedSet的一种

实现NavigableSet的类

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

TreeSet类实现NavigableSet接口。

如何使用NavigableSet?

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

// TreeSet类的SortedSet实现
NavigableSet<String> numbers = new TreeSet<>();

在这里,我们创建了TreeSet类的一个名为numbers的可导航集。

NavigableSet的方法

NavigableSet被视为SortedSet的一种。 这是因为NavigableSet继承了SortedSet接口。

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

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

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

headSet(element,booleanValue)

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

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

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

tailSet(element,booleanValue)

tailSet()返回指定元素(作为参数传递)之后的可导航集的所有元素,包括指定元素。

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

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

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() - 返回并从集合中删除最后一个元素

TreeSet类中NavigableSet的实现

import java.util.NavigableSet;
import java.util.TreeSet;

class Main {

    public static void main(String[] args) {
        //使用TreeSet创建NavigableSet
        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("第一个元素: " + firstElement);

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

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

        //删除最后一个元素
        int number2 = numbers.pollLast();
        System.out.println("删除最后一个元素: " + number2);

    }
}

输出结果

NavigableSet: [1, 2, 3]
第一个元素: 1
最后一个元素: 3
删除第一个元素: 1
删除最后一个元素: 3

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

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