Module java.base
Package java.util

Interface SortedSet<E>

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

public interface SortedSet<E> extends Set<E>, SequencedSet<E>
一个Set,进一步为其元素提供了一个完全排序。元素使用它们的自然排序或者通常在排序集创建时提供的Comparator进行排序。集合的迭代器将按升序遍历集合中的元素。提供了几个额外的操作以利用排序。 (此接口是SortedMap的集合类比。)

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

请注意,排序集维护的排序(无论是否提供了显式比较器)必须与equals一致,以便排序集正确实现Set接口。 (有关与equals一致的精确定义,请参阅Comparable接口或Comparator接口。)这是因为Set接口是根据equals操作定义的,但排序集使用其compareTo(或compare)方法执行所有元素比较,因此通过此方法视为相等的两个元素从排序集的角度来看是相等的。即使其排序与equals不一致,排序集的行为也是定义良好的;它只是未遵守Set接口的一般契约。

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

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

   SortedSet<String> sub = s.subSet(low, high+"\0");
可以使用类似的技术生成一个开放范围(不包含任何端点)。以下习语获取一个视图,其中包含s中从lowhigh(不包括)的所有字符串:
   SortedSet<String> sub = s.subSet(low+"\0", high);

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

自 JDK 版本:
1.2
参见:
  • Method Details

    • 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为null且此集合不允许null元素
      IllegalArgumentException - 如果fromElement大于toElement;或者如果此集合本身具有受限范围,并且fromElementtoElement位于范围的边界之外
    • headSet

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

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

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

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

      尝试插入超出其范围的元素时,返回的集合将抛出IllegalArgumentException异常。

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

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

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

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

      Spliterator报告Spliterator.DISTINCTSpliterator.SORTEDSpliterator.ORDERED。实现应该记录其他特征值的报告。

      如果排序集合的比较器(参见comparator())为null,则Spliterator的比较器(参见Spliterator.getComparator())必须为null。否则,Spliterator的比较器必须与排序集合的比较器相同或施加相同的全序。

      指定者:
      spliterator 在接口 Collection<E>
      指定者:
      spliterator 在接口 Iterable<E>
      指定者:
      spliterator 在接口 Set<E>
      实现要求:
      默认实现从排序集合的Iterator创建一个延迟绑定的spliterator。spliterator继承集合的迭代器的快速失败属性。spliterator的比较器与排序集合的比较器相同。

      创建的Spliterator另外报告Spliterator.SIZED

      实现注意:
      创建的Spliterator另外报告Spliterator.SUBSIZED
      返回:
      返回该排序集合中的元素的Spliterator
      自1.8起
    • addFirst

      default void addFirst(E e)
      抛出UnsupportedOperationException。由该集合的比较方法引起的遇到顺序决定元素的位置,因此不支持显式定位。
      指定者:
      addFirst 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现始终抛出UnsupportedOperationException
      参数:
      e - 要添加的元素
      抛出:
      UnsupportedOperationException - 总是
      自21起
    • addLast

      default void addLast(E e)
      抛出UnsupportedOperationException。由该集合的比较方法引起的遇到顺序决定元素的位置,因此不支持显式定位。
      指定者:
      addLast 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现始终抛出UnsupportedOperationException
      参数:
      e - 要添加的元素。
      抛出:
      UnsupportedOperationException - 总是
      自21起
    • getFirst

      default E getFirst()
      获取该集合的第一个元素。
      指定者:
      getFirst 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现返回调用first方法的结果。
      返回:
      检索到的元素
      抛出:
      NoSuchElementException - 如果该集合为空
      自21起
    • getLast

      default E getLast()
      获取该集合的最后一个元素。
      指定者:
      getLast 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现返回调用last方法的结果。
      返回:
      检索到的元素
      抛出:
      NoSuchElementException - 如果该集合为空
      自21起
    • removeFirst

      default E removeFirst()
      移除并返回该集合的第一个元素(可选操作)。
      指定者:
      removeFirst 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现调用first方法获取第一个元素,然后调用remove(element)移除该元素,然后返回该元素。
      返回:
      移除的元素
      抛出:
      NoSuchElementException - 如果该集合为空
      UnsupportedOperationException - 如果该集合实现不支持此操作
      自21起
    • removeLast

      default E removeLast()
      移除并返回该集合的最后一个元素(可选操作)。
      指定者:
      removeLast 在接口 SequencedCollection<E>
      实现要求:
      该接口中的实现调用last方法获取最后一个元素,然后调用remove(element)移除该元素,然后返回该元素。
      返回:
      移除的元素
      抛出:
      NoSuchElementException - 如果该集合为空
      UnsupportedOperationException - 如果该集合实现不支持此操作
      自21起
    • reversed

      default SortedSet<E> reversed()
      返回该集合的逆序视图。返回视图中元素的遇到顺序与该集合中元素的遇到顺序相反。逆序排序会影响所有对顺序敏感的操作,包括对返回视图的视图集合的操作。如果集合实现允许修改此视图,则对底层集合的修改会“写入”到该视图。对底层集合的更改可能会或可能不会在此逆序视图中可见,这取决于实现。
      指定者:
      reversed 在接口 SequencedCollection<E>中指定
      指定者:
      reversed 在接口 SequencedSet<E>中指定
      实现要求:
      该接口中的实现返回一个反向排序的SortedSet视图。该视图的reversed()方法返回对该SortedSet的引用。视图上的其他操作通过调用该SortedSet上的公共方法来实现。视图上的调用与该SortedSet上的调用之间的确切关系未指定。但是,对于顺序敏感的操作,通常会委托给具有相反方向的适当方法。例如,在视图上调用getFirst会导致在该SortedSet上调用getLast
      返回:
      该集合的反向排序视图,作为一个SortedSet
      自:
      21