模块  java.base
软件包  java.util

Interface SortedSet<E>

  • 参数类型
    E - 此集维护的元素类型
    All Superinterfaces:
    Collection<E>Iterable<E>Set<E>
    All Known Subinterfaces:
    NavigableSet<E>
    所有已知实现类:
    ConcurrentSkipListSetTreeSet

    public interface SortedSet<E>extends Set<E>
    Set进一步提供其元素的总排序 元素使用natural orderingComparator进行排序,通常在排序集创建时提供。 set的迭代器将按升序元素顺序遍历集合。 提供了几个额外的操作以利用订购。 (此接口是SortedMap的设定模拟。)

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

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

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

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

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

    此接口是Java Collections Framework的成员。

    从以下版本开始:
    1.2
    另请参见:
    SetTreeSetSortedMapCollectionComparableComparatorClassCastException
    • 方法详细信息

      • comparator

        Comparator<? super E> comparator()
        返回用于为了在这个组中的元素,或比较null如果这个集使用natural ordering的元素。
        结果
        用于对此集合中的元素进行排序的比较器,如果此集合使用其元素的自然顺序, null
      • subSet

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

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

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

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

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

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

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

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

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

        E first()
        返回此集合中当前的第一个(最低)元素。
        结果
        当前在此集合中的第一个(最低)元素
        异常
        NoSuchElementException - 如果此设置为空
      • last

        E last()
        返回此集合中当前的最后一个(最高)元素。
        结果
        当前在此集合中的最后一个(最高)元素
        异常
        NoSuchElementException - 如果此设置为空