SortedSet接口

第1部分 SortedSet接口介绍

SortedSet接口简介

SortedSet接口实现了Set接口,因此具有Set, Collection,Iterable接口的所有方法属性。
SortedSet接口使用指定的比较器来排序,同时提供获取首尾元素,指定范围集合的方法。

SortedSet接口常用API

修饰语和返回类型方法描述
Comparator<? super E>comparator()获取比较器
SortedSetsubSet(E fromElement, E toElement)返回值范围为[fromElement,toElement)范围的子集
SortedSetheadSet(E toElement)返回值小于的toElement子集
SortedSettailSet(E fromElement)返回值大于或等于fromElement的子集
Efirst()获取当前集合的首元素
Elast()获取当前集合的尾元素
default Spliterator<E>spliterator()获取可分割迭代器

根据这些API可知,只需要记住SortedSet获取范围是左闭右开即可。

第2部分 SortedSet接口数据结构

SortedSet接口的继承关系

java.lang.Object
   ↳   java.lang.Iterable<E>
   		↳   java.util.Collection<E>
   			↳   java.util.Set<E>
   				↳   

public interface SortedSet<E> extends Set<E> {}

SortedSet接口的关系图
在这里插入图片描述
图1 SortedSet接口的关系图

第3部分 SortedSet接口源码解析(基于JDK-8u201)

以下方法的含义在前面已经说明,下面主要分析重写的方法。

public interface SortedSet<E> extends Set<E> {
    Comparator<? super E> comparator();
    SortedSet<E> subSet(E fromElement, E toElement);
    SortedSet<E> headSet(E toElement);
    SortedSet<E> tailSet(E fromElement);
    E first();
    E last();
    @Override
    default Spliterator<E> spliterator() {
    	//设置特征码为DISTINCT|SORTED|ORDERED,表明每个元素都是不同,并且是有序的
        return new Spliterators.IteratorSpliterator<E>(
                this, Spliterator.DISTINCT | Spliterator.SORTED | Spliterator.ORDERED) {
            //指定比较器为SortedSet实例对象的比较器
            @Override
            public Comparator<? super E> getComparator() {
                return SortedSet.this.comparator();
            }
        };
    }
}

以上代码比较简单,使用了模板方法的涉及模式,让子类来指定比较器。然而有一个需要注意的地方,就是SortedSet.this,这是一种比较有意思的方式,用来获取具体实例对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值