【Java集合框架】15 ——SortedSet 接口

一、SortedSet 接口 是什么

位于java.util包的SortedSet接口扩展了集合框架中的Set接口。它是一个实现数学集的接口。该接口包含了从Set接口继承的方法,并添加了一个特性,该特性以排序的方式存储该接口中要存储的所有元素。

SortedSet 接口的 层次结构:
在这里插入图片描述

在上图中,navigableSet 接口 扩展了SortedSet 接口。因为Set 集合不保留插入顺序,所以navigableSet 接口提供了TreeSet的实现类。实现navigableSet 的类是TreeSet,它是一个自平衡树的实现。因此,该接口为我们提供了一种通过该树导航的方法。

SortedSet接口声明为:

public interface SortedSet<E> extends Set<E>

二、SortedSet 接口 的操作

由于SortedSet是一个接口,它只能用于实现该接口的类。TreeSet是实现SortedSet接口的类。现在,让我们看看如何在TreeSet上执行一些常用的操作。

2.1 添加操作

为了向SortedSet添加元素,可以使用add()方法。但是,插入顺序不保留在TreeSet中 。在内部,对每个元素的值进行比较并按升序排序。
我们需要注意的是,不允许重复元素,并且忽略所有重复元素。而且,SortedSet不接受Null值。,否则报空指针异常

实例:


        SortedSet<String> ts  = new TreeSet<String>();

        // 添加元素
        ts.add("深圳");
        ts.add("广州");
        ts.add("珠海");
        ts.add("佛山");
        ts.add("佛山");   // 忽略重复值
//        ts.add(null);   // 不接受Null 值 ,报空指针异常:NullPointerException

        System.out.println(ts);

输出:

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

2.2 访问操作

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

实例:

    public static void main(String[] args) {
        SortedSet<String> ts  = new TreeSet<String>();

        // 添加元素
        ts.add("深圳");
        ts.add("广州");
        ts.add("珠海");
        ts.add("佛山");

        System.out.println("有序集合:"+ts);

        System.out.println("Contains方法: "
                + " " + ts.contains("珠海"));

        System.out.println("首元素" + ts.first());
        System.out.println("尾元素" + ts.last());
    }

输出:

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

2.3 删除操作

可以使用remove()方法从SortedSet中删除这些值。
实例:

    public static void main(String[] args) {
        SortedSet<String> ts  = new TreeSet<String>();

        // 添加元素
        ts.add("深圳");
        ts.add("广州");
        ts.add("珠海");
        ts.add("佛山");

        System.out.println("有序集合:"+ts);
		// 删除元素
        ts.remove("广州");
        System.out.println("删除后 有序集合:" + ts);
    }

输出:

有序集合:[佛山, 广州, 深圳, 珠海]
删除后 有序集合:[佛山, 深圳, 珠海]

2.4 迭代操作

有多种方法可以遍历SortedSet。最著名的方法是使用增强的for循环。

实例:

    public static void main(String[] args) {
        SortedSet<String> ts  = new TreeSet<String>();

        // 添加元素
        ts.add("深圳");
        ts.add("广州");
        ts.add("珠海");
        ts.add("佛山");

        System.out.println("有序集合:"+ts);

        for (String value : ts)
            System.out.print(value
                    + ", ");
    }

输出:

有序集合:[佛山, 广州, 深圳, 珠海]
佛山, 广州, 深圳, 珠海, 

三、SortedSet接口的API

MethodDescription
comparator()此方法返回用于排序该集合中的元素的比较器,如果该集合使用其元素的自然排序,则返回null。
first()这个方法返回这个集合中出现的第一个(最低的)元素。
headSet(element)这个方法返回比排序集合中存在的元素小的元素。
last()这个方法返回集合中最后(最高)的元素。
subSet(element1, element2)这个方法返回包含element1和element2之间元素的集合的一个排序子集。
tailSet(element)此方法返回大于或等于排序集合中存在的元素的元素。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值