• 【Java集合框架】16 ——NavigableSet 接口


    一、NavigableSet 接口 是什么

    NavigableSet表示Java集合框架中的一个可导航集。NavigableSet接口继承自SortedSet接口。它的行为类似于SortedSet,除了SortedSet的排序机制之外,我们还有可用的导航方法

    例如,与SortedSet中定义的顺序相比,NavigableSet接口可以以相反的顺序导航集合。可以按升序或降序访问和遍历NavigableSet。
    实现这个接口的类是TreeSet和ConcurrentSkipListSet

    NavigableSet 层次结构:
    在这里插入图片描述

    NavigableSet 接口声明为

    public interface NavigableSet<E> extends SortedSet<E> 
    
    • 1

    NavigableSet 接口 创建对象:
    因为NavigableSet是一个接口,所以不能创建NavigableSet类型的对象。我们总是需要一个扩展这个列表的类来创建对象。而且,在Java 1.5中引入泛型之后,可以限制可存储在NavigableSet中的对象类型。这个类型安全集可以定义为:

    NavigableSet<Obj> set = new TreeSet<Obj> ();
    
    • 1

    二、NavigableSet 接口 的操作

    2.1 添加操作

    为了向NavigableSet添加元素,我们可以使用add()方法。但是,TreeSet不保留插入顺序。在内部,对于每个元素,值都按升序进行比较和排序。我们需要注意,不允许重复元素,并且忽略所有重复元素。此外,NavigableSet不接受空值

    实例:

        public static void main(String[] args) {
            NavigableSet<String> ns = new TreeSet<String>();
    
            // 添加元素
            ns.add("深圳");
            ns.add("广州");
            ns.add("珠海");
            ns.add("佛山"); 
            ns.add("佛山");   //  忽略重复值
            //ns.add(null);  // 添加 null , 报错:空指针
            System.out.println(ns);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出:

    [佛山, 广州, 深圳, 珠海]
    
    • 1

    2.2 访问操作

    添加元素后,如果想访问元素,可以使用内置方法,如contains()、first()、last()等。

    实例:

        public static void main(String[] args) {
            NavigableSet<String> ns = new TreeSet<String>();
    
            // 添加元素
            ns.add("深圳");
            ns.add("广州");
            ns.add("珠海");
            ns.add("佛山");
            System.out.println(ns);
    
            System.out.println("Navigable集合:"+ns);
    
            System.out.println("Contains方法: "
                    + " " + ns.contains("珠海"));
    
            System.out.println("首元素" + ns.first());
            System.out.println("尾元素" + ns.last());
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    输出:

    [佛山, 广州, 深圳, 珠海]
    Navigable集合:[佛山, 广州, 深圳, 珠海]
    Contains方法:  true
    首元素佛山
    尾元素珠海
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 删除操作

    可以使用remove()、pollFirst()、pollLast()方法从NavigableSet中删除这些值。

    实例:

        public static void main(String[] args) {
            NavigableSet<String> ns = new TreeSet<String>();
    
            // 添加元素
            ns.add("深圳");
            ns.add("广州");
            ns.add("珠海");
            ns.add("佛山");
    
            System.out.println("Navigable集合:"+ns);
    
            ns.remove("广州");
            System.out.println("删除 广州后: :" + ns);
    
    
    
            // 删除首元素
            ns.pollFirst();
    
            System.out.println("删除首元素后: " + ns);
    
            // 删除尾元素
            ns.pollLast();
    
            System.out.println("删除尾元素后 " + ns);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    输出:

    Navigable集合:[佛山, 广州, 深圳, 珠海]
    删除 广州后: :[佛山, 深圳, 珠海]
    删除首元素后: [深圳, 珠海]
    删除尾元素后 [深圳]
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    RHCE之路防火墙,iptables
    教你如何使用 Visual Studio IDE 正确的进行 C++ 桌面开发
    HTTPS基础原理和配置-3
    JavaScript系列从入门到精通系列第十九篇:JavaScript中的this关键字
    前端学习笔记13——JSON数据的概念和分类
    deepstream检测帧率很高,但是视频有延迟和拖延情况(问题解决)
    软件测试:黑盒测试用例的四种设计方法
    【React一】React基础+组件化编程【ref+props+state】
    Centos7 安装 MySQL5.7 步骤
    [找规律]Number Game 2022牛客多校第6场 J
  • 原文地址:https://blog.csdn.net/weixin_44735928/article/details/126239157