模块 java.base
 java.util

接口 SortedSet<E>

类型参数:
E - 此集合维护的元素类型
所有父级接口:
Collection<E> , Iterable<E> , Set<E>
所有已知的子接口:
NavigableSet<E>
所有已知的实现类:
ConcurrentSkipListSet , TreeSet

public interface SortedSet<E> extends Set <E>
一个 Set 进一步提供了一个总订购在它的元素上。这些元素使用它们的 自然排序 或通常在排序集创建时提供的 Comparator 进行排序。集合的迭代器将按升序元素顺序遍历集合。提供了几个额外的操作来利用排序。 (此接口是SortedMap 的设置模拟。)

插入有序集合的所有元素都必须实现 Comparable 接口(或被指定的比较器接受)。此外,所有这些元素必须是相互比较e1.compareTo(e2)(或 comparator.compare(e1, e2))不得为排序集中的任何元素 e1e2 抛出 ClassCastException。试图违反此限制将导致违规方法或构造函数调用抛出 ClassCastException

请注意,排序集维护的顺序(无论是否提供显式比较器)必须是一致如果排序集正确实现Set接口。 (参见 Comparable 接口或 Comparator 接口的精确定义一致.) 之所以如此,是因为 Set 接口是根据 equals 操作定义的,但是排序集使用其 compareTo (或 compare )方法执行所有元素比较,因此从角度来看,被该方法视为相等的两个元素是的排序集,相等。有序集合的行为定义明确,即使其顺序与 equals 不一致;它只是不遵守 Set 接口的一般合同。

所有通用排序集实现类都应提供四个“标准”构造函数:1) void(无参数)构造函数,它创建一个空的排序集,该排序集根据其元素的自然顺序排序。 2) 具有Comparator 类型的单个参数的构造函数,它创建一个根据指定比较器排序的空排序集。 3) 具有 Collection 类型的单个参数的构造函数,它创建一个新的排序集合,其元素与其参数相同,并根据元素的自然顺序排序。 4) 具有 SortedSet 类型的单个参数的构造函数,它创建一个新的有序集合,它具有与输入有序集合相同的元素和相同的顺序。没有办法强制执行此建议,因为接口不能包含构造函数。

注意:有几种方法返回具有受限范围的子集。这样的范围是半开,也就是说,它们包括低端点但不包括高端点(如适用)。如果你需要一个封闭范围(包括两个端点),并且元素类型允许计算给定值的后继,仅请求从 lowEndpointsuccessor(highEndpoint) 的子范围。例如,假设 s 是一组排序的字符串。以下成语获取包含 s 中从 lowhigh 的所有字符串的视图,包括:

  SortedSet<String> sub = s.subSet(low, high+"\0");
可以使用类似的技术来生成开放范围(不包含端点)。以下成语获取包含 slowhigh 的所有字符串的视图,独占:
  SortedSet<String> sub = s.subSet(low+"\0", high);

此接口是 Java 集合框架 的成员。

自从:
1.2
参见:
  • 方法详情

    • comparator

      Comparator <? super E > comparator()
      返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回 null
      返回:
      用于对该集合中的元素进行排序的比较器,或者 null 如果该集合使用其元素的自然排序
    • subSet

      SortedSet <E > subSet(E  fromElement, E  toElement)
      返回此集合的部分视图,其元素范围从 fromElement(含)到 toElement(不含)。 (如果 fromElementtoElement 相等,则返回的集合为空。)返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。

      返回的集合将在尝试插入其范围之外的元素时抛出 IllegalArgumentException

      参数:
      fromElement - 返回集的低端点(含)
      toElement - 返回集的高端点(不包括)
      返回:
      该集合的部分视图,其元素范围从 fromElement(含)到 toElement(不含)
      抛出:
      ClassCastException - 如果 fromElementtoElement 无法使用该集合的比较器相互比较(或者,如果该集合没有比较器,则使用自然排序)。如果无法将 fromElementtoElement 与当前集合中的元素进行比较,实现可能会(但不是必须)抛出此异常。
      NullPointerException - 如果 fromElementtoElement 为空且此集合不允许空元素
      IllegalArgumentException - 如果 fromElement 大于 toElement ;或者如果这个集合本身有一个限制范围,并且 fromElementtoElement 位于范围的边界之外
    • headSet

      SortedSet <E > headSet(E  toElement)
      返回此集合中元素严格小于 toElement 的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。

      返回的集合将在尝试插入其范围之外的元素时抛出 IllegalArgumentException

      参数:
      toElement - 返回集的高端点(不包括)
      返回:
      该集合中元素严格小于 toElement 的部分的视图
      抛出:
      ClassCastException - 如果 toElement 与该集合的比较器不兼容(或者,如果该集合没有比较器,如果 toElement 未实现 Comparable )。如果无法将 toElement 与集合中的当前元素进行比较,则实现可能会(但不是必须)抛出此异常。
      NullPointerException - 如果 toElement 为空且此集合不允许空元素
      IllegalArgumentException - 如果这个集合本身有一个限制范围,并且 toElement 位于范围的边界之外
    • tailSet

      SortedSet <E > tailSet(E  fromElement)
      返回此集合中元素大于或等于 fromElement 的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。

      返回的集合将在尝试插入其范围之外的元素时抛出 IllegalArgumentException

      参数:
      fromElement - 返回集的低端点(含)
      返回:
      该集合的元素大于或等于 fromElement 的部分的视图
      抛出:
      ClassCastException - 如果 fromElement 与该集合的比较器不兼容(或者,如果该集合没有比较器,如果 fromElement 未实现 Comparable )。如果 fromElement 无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。
      NullPointerException - 如果 fromElement 为空且此集合不允许空元素
      IllegalArgumentException - 如果这个集合本身有一个限制范围,并且 fromElement 位于范围的边界之外
    • first

      E  first()
      返回此集合中当前的第一个(最低)元素。
      返回:
      此集合中当前的第一个(最低)元素
      抛出:
      NoSuchElementException - 如果这个集合是空的
    • last

      E  last()
      返回此集合中当前的最后一个(最高)元素。
      返回:
      该集合中当前的最后一个(最高)元素
      抛出:
      NoSuchElementException - 如果这个集合是空的
    • spliterator

      default Spliterator <E > spliterator()
      在此排序集中的元素上创建一个 Spliterator

      Spliterator 报告 Spliterator.DISTINCT Spliterator.SORTED Spliterator.ORDERED 。实施应记录附加特征值的报告。

      如果排序集的比较器(参见 comparator() )是 null ,则拆分器的比较器(参见 Spliterator.getComparator() )必须是 null 。否则,拆分器的比较器必须与排序集的比较器相同或强加相同的总排序。

      指定者:
      spliterator 在接口 Collection<E>
      指定者:
      spliterator 在接口 Iterable<E>
      指定者:
      spliterator 在接口 Set<E>
      实现要求:
      默认实现从排序集的 Iterator 创建一个 late-binding 拆分器。拆分器继承了集合迭代器的 fail-fast 属性。拆分器的比较器与排序集的比较器相同。

      创建的 Spliterator 还报告 Spliterator.SIZED

      实现注意事项:
      创建的 Spliterator 还报告 Spliterator.SUBSIZED
      返回:
      a Spliterator 在此有序集合中的元素上
      自从:
      1.8