- 类型参数:
-
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 EgetFirst()获取此集合的第一个元素。default EgetLast()获取此集合的最后一个元素。返回此集合中严格小于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
-