# SortedSet 接口
进一步提供关于元素的总体排序的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。 该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此接口是 SortedMap 的 set 对应接口)。
- Range view - 允许对排序集进行任意范围操作
- Endpoints - 返回排序集中的第一个或最后一个元素
- Comparator access- 返回 Comparator 用于对集合进行排序的(如果有)
接口代码如下:
public interface SortedSet<E> extends Set<E> {
// Range-view
SortedSet<E> subSet(E fromElement, E toElement);
SortedSet<E> headSet(E toElement);
SortedSet<E> tailSet(E fromElement);
// Endpoints
E first();
E last();
// Comparator access
Comparator<? super E> comparator();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# set 操作
继承 set 的相同的行为,但是有两个例外:
- Iterator
- toArray
虽然接口不能保证,但是 Java 平台的 SortedSet 实现的 toString 方法返回一个字符串,其中包含的所有元素的排序。
!没看明白这一段。是说上面两个例外的方法和 set 不具有相同行为的吗?还是等以后看源码的时候再来看这个好了。
# 构造函数
所有通用有序 set 实现类都应该提供 4 个“标准”构造方法:
- void(无参数)构造方法,它创建一个空的有序 set,按照元素的自然顺序进行排序。
- 带有一个 Comparator 类型参数的构造方法,它创建一个空的有序 set,根据指定的比较器进行排序。
- 带有一个 Collection 类型参数的构造方法,它创建一个新的有序 set,其元素与参数相同,按照元素的自然顺序进行排序。
- 带有一个 SortedSet 类型参数的构造方法,它创建一个新的有序 set,其元素和排序方法与输入的有序 set 相同。无法保证强制实施此建议,因为接口不能包含构造方法。
例如 TreeSet 自己有一个默认的自然排序算法,还提供一个接收比较器的构造函数。
# 范围视图操作
range-view
操作有点类似于 List
接口。但是有一个很大的不同。
后面看不懂了。。。
← 对象排序 SortedMap接口 →