- 类型参数:
E
- 此集合维护的元素类型
- 所有父级接口:
Collection<E>
,Iterable<E>
,Set<E>
- 所有已知的子接口:
NavigableSet<E>
- 所有已知的实现类:
ConcurrentSkipListSet
,TreeSet
Set
进一步提供了一个总订购在它的元素上。这些元素使用它们的 自然排序 或通常在排序集创建时提供的 Comparator
进行排序。集合的迭代器将按升序元素顺序遍历集合。提供了几个额外的操作来利用排序。 (此接口是SortedMap
的设置模拟。)
插入有序集合的所有元素都必须实现 Comparable
接口(或被指定的比较器接受)。此外,所有这些元素必须是相互比较e1.compareTo(e2)
(或 comparator.compare(e1, e2)
)不得为排序集中的任何元素 e1
和 e2
抛出 ClassCastException
。试图违反此限制将导致违规方法或构造函数调用抛出 ClassCastException
。
请注意,排序集维护的顺序(无论是否提供显式比较器)必须是一致如果排序集正确实现Set
接口。 (参见 Comparable
接口或 Comparator
接口的精确定义一致.) 之所以如此,是因为 Set
接口是根据 equals
操作定义的,但是排序集使用其 compareTo
(或 compare
)方法执行所有元素比较,因此从角度来看,被该方法视为相等的两个元素是的排序集,相等。有序集合的行为是定义明确,即使其顺序与 equals 不一致;它只是不遵守 Set
接口的一般合同。
所有通用排序集实现类都应提供四个“标准”构造函数:1) void(无参数)构造函数,它创建一个空的排序集,该排序集根据其元素的自然顺序排序。 2) 具有Comparator
类型的单个参数的构造函数,它创建一个根据指定比较器排序的空排序集。 3) 具有 Collection
类型的单个参数的构造函数,它创建一个新的排序集合,其元素与其参数相同,并根据元素的自然顺序排序。 4) 具有 SortedSet
类型的单个参数的构造函数,它创建一个新的有序集合,它具有与输入有序集合相同的元素和相同的顺序。没有办法强制执行此建议,因为接口不能包含构造函数。
注意:有几种方法返回具有受限范围的子集。这样的范围是半开,也就是说,它们包括低端点但不包括高端点(如适用)。如果你需要一个封闭范围(包括两个端点),并且元素类型允许计算给定值的后继,仅请求从 lowEndpoint
到 successor(highEndpoint)
的子范围。例如,假设 s
是一组排序的字符串。以下成语获取包含 s
中从 low
到 high
的所有字符串的视图,包括:
SortedSet<String> sub = s.subSet(low, high+"\0");可以使用类似的技术来生成开放范围(不包含端点)。以下成语获取包含
s
从 low
到 high
的所有字符串的视图,独占:
SortedSet<String> sub = s.subSet(low+"\0", high);
此接口是 Java 集合框架 的成员。
- 自从:
- 1.2
- 参见:
-
方法总结
修饰符和类型方法描述Comparator<? super E>
返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null
。first()
返回此集合中当前的第一个(最低)元素。返回此集合中元素严格小于toElement
的部分的视图。last()
返回此集合中当前的最后一个(最高)元素。default Spliterator<E>
在此排序集中的元素上创建一个Spliterator
。返回此集合的部分视图,其元素范围从fromElement
(含)到toElement
(不含)。返回此集合中元素大于或等于fromElement
的部分的视图。在接口 java.util.Collection 中声明的方法
parallelStream, removeIf, stream, toArray
-
方法详情
-
comparator
Comparator <? super E > comparator()返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null
。- 返回:
-
用于对该集合中的元素进行排序的比较器,或者
null
如果该集合使用其元素的自然排序
-
subSet
返回此集合的部分视图,其元素范围从fromElement
(含)到toElement
(不含)。 (如果fromElement
和toElement
相等,则返回的集合为空。)返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException
。- 参数:
fromElement
- 返回集的低端点(含)toElement
- 返回集的高端点(不包括)- 返回:
-
该集合的部分视图,其元素范围从
fromElement
(含)到toElement
(不含) - 抛出:
ClassCastException
- 如果fromElement
和toElement
无法使用该集合的比较器相互比较(或者,如果该集合没有比较器,则使用自然排序)。如果无法将fromElement
或toElement
与当前集合中的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException
- 如果fromElement
或toElement
为空且此集合不允许空元素IllegalArgumentException
- 如果fromElement
大于toElement
;或者如果这个集合本身有一个限制范围,并且fromElement
或toElement
位于范围的边界之外
-
headSet
返回此集合中元素严格小于toElement
的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException
。- 参数:
toElement
- 返回集的高端点(不包括)- 返回:
-
该集合中元素严格小于
toElement
的部分的视图 - 抛出:
ClassCastException
- 如果toElement
与该集合的比较器不兼容(或者,如果该集合没有比较器,如果toElement
未实现Comparable
)。如果无法将toElement
与集合中的当前元素进行比较,则实现可能会(但不是必须)抛出此异常。NullPointerException
- 如果toElement
为空且此集合不允许空元素IllegalArgumentException
- 如果这个集合本身有一个限制范围,并且toElement
位于范围的边界之外
-
tailSet
返回此集合中元素大于或等于fromElement
的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException
。- 参数:
fromElement
- 返回集的低端点(含)- 返回:
-
该集合的元素大于或等于
fromElement
的部分的视图 - 抛出:
ClassCastException
- 如果fromElement
与该集合的比较器不兼容(或者,如果该集合没有比较器,如果fromElement
未实现Comparable
)。如果fromElement
无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException
- 如果fromElement
为空且此集合不允许空元素IllegalArgumentException
- 如果这个集合本身有一个限制范围,并且fromElement
位于范围的边界之外
-
first
E first()返回此集合中当前的第一个(最低)元素。- 返回:
- 此集合中当前的第一个(最低)元素
- 抛出:
NoSuchElementException
- 如果这个集合是空的
-
last
E last()返回此集合中当前的最后一个(最高)元素。- 返回:
- 该集合中当前的最后一个(最高)元素
- 抛出:
NoSuchElementException
- 如果这个集合是空的
-
spliterator
在此排序集中的元素上创建一个Spliterator
。Spliterator
报告Spliterator.DISTINCT
、Spliterator.SORTED
和Spliterator.ORDERED
。实施应记录附加特征值的报告。如果排序集的比较器(参见
comparator()
)是null
,则拆分器的比较器(参见Spliterator.getComparator()
)必须是null
。否则,拆分器的比较器必须与排序集的比较器相同或强加相同的总排序。- 指定者:
spliterator
在接口Collection<E>
中- 指定者:
spliterator
在接口Iterable<E>
中- 指定者:
spliterator
在接口Set<E>
中- 实现要求:
-
默认实现从排序集的
Iterator
创建一个 late-binding 拆分器。拆分器继承了集合迭代器的 fail-fast 属性。拆分器的比较器与排序集的比较器相同。创建的
Spliterator
还报告Spliterator.SIZED
。 - 实现注意事项:
-
创建的
Spliterator
还报告Spliterator.SUBSIZED
。 - 返回:
-
a
Spliterator
在此有序集合中的元素上 - 自从:
- 1.8
-