树叶云鸿蒙OS教程:鸿蒙OS SortedSet

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。
Efirst()返回此集合中当前的第一个(最低)元素。
SortedSetEheadSet(E toElement)返回此集合中元素严格小于 toElement 的部分的视图。
Elast()返回此集合中当前的最后一个(最高)元素。
default SpliteratorEspliterator()在此排序集中的元素上创建一个 Spliterator。
SortedSetEsubSet(E fromElement, E toElement)返回此集合部分的视图,其元素范围从 fromElement(包括)到 toElement(不包括)。
SortedSetEtailSet(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

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/186960.html<

(0)
管理的头像管理
上一篇2025-03-30 01:36
下一篇 2025-03-30 01:37

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注