SortedSet
public interface SortedSet<E>
extends Set<E>
进一步提供对其元素的总排序的 Set。 元素使用它们的 Comparable 排序,或者由通常在排序集创建时提供的 Comparator 排序。 集合的迭代器将按元素升序遍历集合。 提供了几个额外的操作来利用排序。 (这个接口是 SortedMap 的集合类似物。)
插入有序集合的所有元素都必须实现 Comparable 接口(或被指定的比较器接受)。 此外,所有此类元素必须相互比较:e1.compareTo(e2)(或comparator.compare(e1, e2))不得为排序集中的任何元素e1 和e2 抛出ClassCastException。 尝试违反此限制将导致有问题的方法或构造函数调用抛出 ClassCastException。
请注意,如果有序集合要正确实现 Set 接口,则由有序集合维护的排序(无论是否提供显式比较器)必须与 equals 一致。这是因为 Set 接口是根据等于操作定义的,但排序集使用其 compareTo(或比较)方法执行所有元素比较 ,因此从排序集的角度来看,此方法认为相等的两个元素是相等的。 一个有序集合的行为是明确定义的,即使它的排序与equals不一致; 它只是不遵守 Set 接口的一般约定。
所有通用排序集实现类都应提供四个“标准”构造函数: 1) 一个 void(无参数)构造函数,它创建一个空排序集,根据其元素的自然顺序排序。 2) 具有 Comparator 类型的单个参数的构造函数,它创建一个空的排序集,根据指定的比较器排序。 3) 一个具有单个 Collection 类型参数的构造函数,它创建一个新的排序集,其元素与其参数相同,并根据元素的自然顺序进行排序。 4) 具有类型为 SortedSet 的单个参数的构造函数,它创建一个具有与输入排序集相同元素和相同顺序的新排序集。 无法强制执行此建议,因为接口不能包含构造函数。
注意:一些方法返回具有受限范围的子集。 这样的范围是半开的,也就是说,它们包括它们的低端点但不包括它们的高端点(如果适用)。 如果您需要一个封闭范围(包括两个端点),并且元素类型允许计算给定值的后继值,则只需请求从 lowEndpoint 到后继值(highEndpoint)的子范围。 例如,假设 s 是一组已排序的字符串。 下面的成语获得了一个视图,该视图包含 s 中从低到高的所有字符串,包括:
SortedSet<String> sub = s.subSet(low, high+"\0");
类似的技术可用于生成开放范围(不包含端点)。 下面的语句获得了一个视图,该视图包含了 s 中从低到高的所有字符串,排他性的:
SortedSet<String> sub = s.subSet(low+"\0", high);
此接口是 Java 集合框架的成员。
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
Comparator<? super E> | comparator() | 返回用于对该 set 中的元素进行排序的比较器,如果此 set 使用其元素的 Comparable,则返回 null。 |
E | first() | 返回此集合中当前的第一个(最低)元素。 |
SortedSetE | headSet(E toElement) | 返回此集合中元素严格小于 toElement 的部分的视图。 |
E | last() | 返回此集合中当前的最后一个(最高)元素。 |
default SpliteratorE | spliterator() | 在此排序集中的元素上创建一个 Spliterator。 |
SortedSetE | subSet(E fromElement, E toElement) | 返回此集合部分的视图,其元素范围从 fromElement(包括)到 toElement(不包括)。 |
SortedSetE | tailSet(E fromElement) | 返回此集合中元素大于或等于 fromElement 的部分的视图。 |
从接口 java.util.Collection 继承的方法 |
---|
parallelStream, removeIf, stream |
从接口 java.lang.Iterable 继承的方法 |
---|
forEach |
从接口 java.util.Set 继承的方法 |
---|
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
方法详情
comparator
Comparator<? super E> comparator()
返回用于对该 set 中的元素进行排序的比较器,如果此 set 使用其元素的 Comparable,则返回 null。
返回:
用于对该集合中的元素进行排序的比较器,如果此集合使用其元素的自然排序,则为 null
subSet
SortedSetE subSet(E fromElement, E toElement)
返回此集合部分的视图,其元素范围从 fromElement(包括)到 toElement(不包括)。 (如果 fromElement 和 toElement 相等,则返回的集合为空。)返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。 返回的集合支持该集合支持的所有可选集合操作。
返回的集合将在尝试插入超出其范围的元素时抛出 IllegalArgumentException。
参数:
参数名称 | 参数描述 |
---|---|
fromElement | 返回集的低端点(包括) |
toElement | 返回集的高端点(不包括) |
返回:
此集合的一部分的视图,其元素范围从 fromElement(包括)到 toElement(不包括)
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果 fromElement 和 toElement 不能使用该集合的比较器相互比较(或者,如果该集合没有比较器,则使用自然排序)。 如果 fromElement 或 toElement 无法与集合中当前的元素进行比较,则实现可以但不是必须抛出此异常。 |
NullPointerException | 如果 fromElement 或 toElement 为 null 并且此集合不允许 null 元素 |
IllegalArgumentException | 如果 fromElement 大于 toElement; 或者如果这个集合本身有一个受限制的范围,并且 fromElement 或 toElement 位于范围的范围之外 |
headSet
SortedSetE headSet(E toElement)
返回此集合中元素严格小于 toElement 的部分的视图。 返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。 返回的集合支持该集合支持的所有可选集合操作。
返回的集合将在尝试插入超出其范围的元素时抛出 IllegalArgumentException。
参数:
参数名称 | 参数描述 |
---|---|
toElement | 返回集的高端点(不包括) |
返回:
此集合中元素严格小于 toElement 的部分的视图
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果 toElement 与该集合的比较器不兼容(或者,如果该集合没有比较器,如果 toElement 没有实现 Comparable)。 如果 toElement 无法与集合中的当前元素进行比较,则实现可以但不是必须抛出此异常。 |
NullPointerException | 如果 toElement 为 null 并且此集合不允许 null 元素 |
IllegalArgumentException | 如果这个集合本身有一个限制范围,并且 toElement 位于范围的范围之外 |
tailSet
SortedSetE tailSet(E fromElement)
返回此集合中元素大于或等于 fromElement 的部分的视图。 返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。 返回的集合支持该集合支持的所有可选集合操作。
返回的集合将在尝试插入超出其范围的元素时抛出 IllegalArgumentException。
参数:
参数名称 | 参数描述 |
---|---|
fromElement | 返回集的低端点(包括) |
返回:
此集合中元素大于或等于 fromElement 的部分的视图
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果 fromElement 与这个集合的比较器不兼容(或者,如果集合没有比较器,如果 fromElement 没有实现 Comparable)。 如果无法将 fromElement 与当前集合中的元素进行比较,则实现可以但不是必须抛出此异常。 |
NullPointerException | 如果 fromElement 为 null 并且此集合不允许 null 元素 |
IllegalArgumentException | 如果此集合本身具有受限范围,并且 fromElement 位于范围的范围之外 |
first
E first()
返回此集合中当前的第一个(最低)元素。
返回:
当前在此集合中的第一个(最低)元素
Throws:
Throw名称 | Throw描述 |
---|---|
NoSuchElementException | 如果这个集合是空的 |
last
E last()
返回此集合中当前的最后一个(最高)元素。
返回:
当前在此集合中的最后一个(最高)元素
Throws:
Throw名称 | Throw描述 |
---|---|
NoSuchElementException | 如果这个集合是空的 |
spliterator
default SpliteratorE spliterator()
在此排序集中的元素上创建一个 Spliterator。
Spliterator 报告 Spliterator#DISTINCT、Spliterator#SORTED 和 Spliterator#ORDERED。 实施应记录附加特征值的报告。
如果排序集的比较器为空,则拆分器的比较器必须为空。 否则,拆分器的比较器必须与排序集的比较器相同或施加相同的总排序。
指定者:
接口 CollectionE 中的分离器
指定者:
接口 IterableE 中的分离器
指定者:
接口 SetE 中的分离器
返回:
在此排序集中的元素上的 Spliterator