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

一、NavigableSet 接口 是什么

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

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

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

NavigableSet 接口声明为

public interface NavigableSet<E> extends SortedSet<E> 

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

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

二、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);
    }

输出:

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

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());

    }

输出:

[佛山, 广州, 深圳, 珠海]
Navigable集合:[佛山, 广州, 深圳, 珠海]
Contains方法:  true
首元素佛山
尾元素珠海

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);

    }

输出:

Navigable集合:[佛山, 广州, 深圳, 珠海]
删除 广州后: :[佛山, 深圳, 珠海]
删除首元素后: [深圳, 珠海]
删除尾元素后 [深圳]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值