阅读(2007) (0)

鸿蒙OS SortedSet

2022-06-15 17:58:45 更新

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