树叶云鸿蒙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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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