- 类型参数:
-
E
- 此集合中元素的类型
- 所有超级接口:
-
Collection<E>
,Iterable<E>
,SequencedCollection<E>
,SequencedSet<E>
,Set<E>
- 所有已知子接口:
-
NavigableSet<E>
- 所有已知实现类:
-
ConcurrentSkipListSet
,TreeSet
Set
,进一步为其元素提供了一个完全排序。元素使用它们的自然排序或者通常在排序集创建时提供的Comparator
进行排序。集合的迭代器将按升序遍历集合中的元素。提供了几个额外的操作以利用排序。 (此接口是SortedMap
的集合类比。)
插入到排序集中的所有元素必须实现Comparable
接口(或者被指定的比较器接受)。此外,所有这些元素必须是可相互比较的:对于排序集中的任何元素e1
和e2
,e1.compareTo(e2)
(或comparator.compare(e1, e2)
)不能对任何元素e1
和e2
抛出ClassCastException
。试图违反此限制将导致有问题的方法或构造函数调用抛出ClassCastException
。
请注意,排序集维护的排序(无论是否提供了显式比较器)必须与equals一致,以便排序集正确实现Set
接口。 (有关与equals一致的精确定义,请参阅Comparable
接口或Comparator
接口。)这是因为Set
接口是根据equals
操作定义的,但排序集使用其compareTo
(或compare
)方法执行所有元素比较,因此通过此方法视为相等的两个元素从排序集的角度来看是相等的。即使其排序与equals不一致,排序集的行为也是定义良好的;它只是未遵守Set
接口的一般契约。
所有通用排序集实现类应提供四个“标准”构造函数:1)一个空(无参数)构造函数,根据其元素的自然排序创建一个空排序集。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集合框架的成员。
- 自 JDK 版本:
- 1.2
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptiondefault void
抛出UnsupportedOperationException
。default void
抛出UnsupportedOperationException
。Comparator
<? super E> 返回用于对此集合中的元素进行排序的比较器,如果此集合使用其元素的自然排序,则返回null
。first()
返回当前集合中的第一个(最低)元素。default E
getFirst()
获取此集合的第一个元素。default E
getLast()
获取此集合的最后一个元素。返回此集合中严格小于toElement
的部分的视图。last()
返回当前集合中的最后一个(最高)元素。default E
删除并返回此集合的第一个元素(可选操作)。default E
删除并返回此集合的最后一个元素(可选操作)。reversed()
返回此集合的逆序视图。default Spliterator
<E> 在此排序集中的元素上创建一个Spliterator
。返回此集合中元素范围从fromElement
(包括)到toElement
(不包括)的视图。返回此集合中元素大于或等于fromElement
的部分的视图。Methods declared in interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Method Details
-
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
为null且此集合不允许null元素 -
IllegalArgumentException
- 如果fromElement
大于toElement
;或者如果此集合本身具有受限范围,并且fromElement
或toElement
位于范围的边界之外
-
headSet
返回此集合中元素严格小于toElement
的部分的视图。返回的集合由此集合支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持此集合支持的所有可选集合操作。如果尝试插入其范围之外的元素,返回的集合将抛出
IllegalArgumentException
。- 参数:
-
toElement
- 返回集合的高端点(不包括) - 返回:
-
元素严格小于
toElement
的部分的视图 - 抛出:
-
ClassCastException
- 如果toElement
与此集合的比较器不兼容(或者,如果集合没有比较器,则toElement
未实现Comparable
)。如果toElement
无法与集合中当前元素进行比较,实现可能会(但不是必须)抛出此异常。 -
NullPointerException
- 如果toElement
为null且此集合不允许null元素 -
IllegalArgumentException
- 如果此集合本身具有受限范围,并且toElement
位于范围的边界之外
-
tailSet
返回该集合中元素大于或等于fromElement
的部分的视图。返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。尝试插入超出其范围的元素时,返回的集合将抛出
IllegalArgumentException
异常。- 参数:
-
fromElement
- 返回集合的低端点(包括) - 返回:
-
返回该集合中元素大于或等于
fromElement
的部分的视图 - 抛出:
-
ClassCastException
- 如果fromElement
与该集合的比较器不兼容(或者,如果集合没有比较器,如果fromElement
没有实现Comparable
)。如果fromElement
无法与集合中当前元素进行比较,实现可以但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
为null且该集合不允许空元素 -
IllegalArgumentException
- 如果该集合本身具有受限范围,并且fromElement
位于范围之外
-
first
E first()返回当前集合中的第一个(最低)元素。- 返回:
- 返回当前集合中的第一个(最低)元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空
-
last
E last()返回当前集合中的最后一个(最高)元素。- 返回:
- 返回当前集合中的最后一个(最高)元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空
-
spliterator
在该排序集合中的元素上创建一个Spliterator
。Spliterator
报告Spliterator.DISTINCT
、Spliterator.SORTED
和Spliterator.ORDERED
。实现应该记录其他特征值的报告。如果排序集合的比较器(参见
comparator()
)为null
,则Spliterator
的比较器(参见Spliterator.getComparator()
)必须为null
。否则,Spliterator
的比较器必须与排序集合的比较器相同或施加相同的全序。- 指定者:
-
spliterator
在接口Collection<E>
- 指定者:
-
spliterator
在接口Iterable<E>
- 指定者:
-
spliterator
在接口Set<E>
- 实现要求:
-
默认实现从排序集合的
Iterator
创建一个延迟绑定的spliterator。spliterator继承集合的迭代器的快速失败属性。spliterator的比较器与排序集合的比较器相同。创建的
Spliterator
另外报告Spliterator.SIZED
。 - 实现注意:
-
创建的
Spliterator
另外报告Spliterator.SUBSIZED
。 - 返回:
-
返回该排序集合中的元素的
Spliterator
- 自1.8起
-
addFirst
抛出UnsupportedOperationException
。由该集合的比较方法引起的遇到顺序决定元素的位置,因此不支持显式定位。- 指定者:
-
addFirst
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现始终抛出
UnsupportedOperationException
。 - 参数:
-
e
- 要添加的元素 - 抛出:
-
UnsupportedOperationException
- 总是 - 自21起
-
addLast
抛出UnsupportedOperationException
。由该集合的比较方法引起的遇到顺序决定元素的位置,因此不支持显式定位。- 指定者:
-
addLast
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现始终抛出
UnsupportedOperationException
。 - 参数:
-
e
- 要添加的元素。 - 抛出:
-
UnsupportedOperationException
- 总是 - 自21起
-
getFirst
获取该集合的第一个元素。- 指定者:
-
getFirst
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现返回调用
first
方法的结果。 - 返回:
- 检索到的元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空 - 自21起
-
getLast
获取该集合的最后一个元素。- 指定者:
-
getLast
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现返回调用
last
方法的结果。 - 返回:
- 检索到的元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空 - 自21起
-
removeFirst
移除并返回该集合的第一个元素(可选操作)。- 指定者:
-
removeFirst
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现调用
first
方法获取第一个元素,然后调用remove(element)
移除该元素,然后返回该元素。 - 返回:
- 移除的元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空 -
UnsupportedOperationException
- 如果该集合实现不支持此操作 - 自21起
-
removeLast
移除并返回该集合的最后一个元素(可选操作)。- 指定者:
-
removeLast
在接口SequencedCollection<E>
- 实现要求:
-
该接口中的实现调用
last
方法获取最后一个元素,然后调用remove(element)
移除该元素,然后返回该元素。 - 返回:
- 移除的元素
- 抛出:
-
NoSuchElementException
- 如果该集合为空 -
UnsupportedOperationException
- 如果该集合实现不支持此操作 - 自21起
-
reversed
返回该集合的逆序视图。返回视图中元素的遇到顺序与该集合中元素的遇到顺序相反。逆序排序会影响所有对顺序敏感的操作,包括对返回视图的视图集合的操作。如果集合实现允许修改此视图,则对底层集合的修改会“写入”到该视图。对底层集合的更改可能会或可能不会在此逆序视图中可见,这取决于实现。- 指定者:
-
reversed
在接口SequencedCollection<E>
中指定 - 指定者:
-
reversed
在接口SequencedSet<E>
中指定 - 实现要求:
-
该接口中的实现返回一个反向排序的SortedSet视图。该视图的
reversed()
方法返回对该SortedSet的引用。视图上的其他操作通过调用该SortedSet上的公共方法来实现。视图上的调用与该SortedSet上的调用之间的确切关系未指定。但是,对于顺序敏感的操作,通常会委托给具有相反方向的适当方法。例如,在视图上调用getFirst
会导致在该SortedSet上调用getLast
。 - 返回:
-
该集合的反向排序视图,作为一个
SortedSet
- 自:
- 21
-