SortedSet接口源码分析
java.util.SortedSet
接口直接继承自 java.util.Set
接口。
一、SortedSet接口特点或规范
实现规范
- 在
java.util.Set
基础上进一步提供其元素的总排序。元素按照 自然顺序 排序,或通过创建时提供的 比较器排序。 - 迭代器将按 升序 顺序遍历集合。提供了几个额外的操作以利用订购。 (此接口是SortedMap的集合模拟。)
- 插入到 SortedSet 中的所有元素必须实现
java.lang.Comparable
接口(或指定的比较器)。 - 所有元素必须可相互比较,即:**
e1.compareTo(e2)
**(或 **comparator.compare(e1, e2)
**)。 - 注意,如果 SortedSet 要正确实现 Set 接口,则由 SortedSet 维护的排序(无论是否提供显式比较器)必须与 equals() 方法一致。
因为 Set 接口的不可重复性依赖于 equals()
方法,而 SortedSet 使用 compareTo()
方法进行所有元素的比较,
构造器规范
所有 SortedSet
的实现类应提供 四个“标准”构造器:
- 无参构造器,它根据元素的自然顺序创建一个空的 SortedSet。(Collection规范)
- 参数为
Collection
类型的构造器,它创建一个新的 SortedSet,其元素类型与 Collection 参数中的元素类型相同,并根据元素的自然顺序进行排序。(Collection规范) - 参数为
Comparator
类型的构造器,它创建一个根据指定比较器排序的空的 SortedSet。 - 参数为
SortedSet
类型的构造器,它创建一个新的 SortedSet,其具有与输入的 SortedSet 相同的元素和相同的顺序。
由于接口不能包含构造函数,因此无法强制执行此规范。
二、方法描述
comparator()方法
获取当前 Set
对其元素进行排序的比较器,如果当前 Set 的元素排序为自然顺序,则返回 **null
**。
1 |
|
subSet(E, E)方法
返回当前 Set 的子集视图,其元素范围从 fromElement(包含)到 toElement(不包含)。如果fromElement和toElement相等,则返回的集合为空。
1 |
|
headSet(E)方法
返回当前 Set 的子集视图,其元素范围从 Set 第一个元素到 toElement(不包含)。
1 |
|
tailSet(E)方法
返回当前 Set 的子集视图,其元素范围从 fromElement(包含)到 Set 最后一个元素(包含)。
1 |
|
first()方法
返回当前 Set 中的第一个(最低)元素。
1 |
|
last()方法
返回当前 Set 中的最后一个(最高)元素。
1 |
|
spliterator()方法
在此有序集中的元素上创建Spliterator。
Spliterator.DISTINCT
Spliterator.SORTED
Spliterator.ORDERED
如果 SortedSet
的比较器为 **null
**,则 Spliterator 的比较器必须为 **null
**。
否则,Spliterator 的比较器必须与分类组的比较器相同或强加相同的总排序。
1 |
|
SortedSet接口源码分析
https://cuilan.github.io/2019/07/30/java/util/SortedSet-source-analysis/