E
- 由此集合维护的元素的类型
public interface SortedSet<E> extends Set<E>
Set
进一步提供其元素的总排序 。
元素使用他们的natural ordering或通常在排序集创建时提供的Comparator
进行排序。
集合的迭代器将以递增的元素顺序遍历集合。
提供了几个额外的操作来利用订购。
(此接口是该组类似物SortedMap
)。
插入到排序集中的所有元素必须实现Comparable接口(或被指定的比较器接受)。 此外,所有这些元素都必须是可相互比较 :e1.compareTo(e2)(或comparator.compare(e1, e2))不得为任何元件在分类组e1和e2抛出ClassCastException。 尝试违反此限制将导致违规方法或构造函数调用抛出ClassCastException 。
请注意,如果排序集合要正确实现Set接口, 则由排序集维护的排序(无论是否提供显式比较器)必须与equals一致。 (请参阅Comparable接口或Comparator接口的一致的精确定义与equals)。这是因为该Set接口在equals操作定义的,但有序set使用其compareTo(或compare)方法执行的所有元件的比较因此,从排序集合的观点来看,通过该方法认为相等的两个元素是相等的。 排序集合的行为是明确定义的,即使其排序与equals不一致; 它只是没有遵守Set接口的总体合同。
所有通用排序集实现类应提供四个“标准”构造函数:1)一个void(无参数)构造函数,它创建一个根据其元素的自然排序排序的空排序集。 2)具有Comparator类型的单个参数的构造函数 ,它创建根据指定的比较器排序的空排序集。 3)具有类型为Collection的单个参数的构造函数 ,它创建一个具有与其参数相同的元素的新的排序集合,并根据元素的自然排序进行排序。 4)具有类型为SortedSet的单个参数的构造函数 ,其创建具有与输入排序集相同的元素和相同排序的新排序集。 无法执行此建议,因为接口不能包含构造函数。
注意:几种方法返回限制范围的子集。 这种范围是半开放的 ,也就是说,它们包括其低端点,但不包括其高端点(如适用)。 如果您需要一个封闭范围 (包括两个端点),并且元素类型允许计算给定值的后继,只需将子范围从lowEndpoint请求到successor(highEndpoint) 。 例如,假设s是一组排序的字符串。 下面的语句获取包含所有从low在s弦到high的图,包括:
SortedSet<String> sub = s.subSet(low, high+"\0");
可以使用类似的技术来生成开放范围 (其不包含端点)。
以下成语获得包含s中的所有字符串的视图,从low到high ,独占:
SortedSet<String> sub = s.subSet(low+"\0", high);
此接口是成员Java Collections Framework 。
Set
, TreeSet
, SortedMap
, Collection
, Comparable
, Comparator
, ClassCastException
Modifier and Type | Method and Description |
---|---|
Comparator<? super E> |
comparator()
返回用于对该集合中的元素进行排序的比较器,或null,如果此集合使用其元素的natural ordering 。
|
E |
first()
返回此集合中当前的第一个(最低)元素。
|
SortedSet<E> |
headSet(E toElement)
返回该集合的部分的视图,其元素严格小于
toElement 。
|
E |
last()
返回此集合中当前的最后(最高)元素。
|
default Spliterator<E> |
spliterator()
在此排序集中的元素上创建一个
Spliterator 。
|
SortedSet<E> |
subSet(E fromElement, E toElement)
返回该集合的部分的视图,其元素的范围为
fromElement (含),为
toElement ,独占。
|
SortedSet<E> |
tailSet(E fromElement)
返回此组件的元素大于或等于
fromElement的部分的视图。
|
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
parallelStream, removeIf, stream
Comparator<? super E> comparator()
SortedSet<E> subSet(E fromElement, E toElement)
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
fromElement
- 返回集合的低端点(含)
toElement
- 返回集合的高端点(独占)
ClassCastException
- 如果fromElement和toElement无法使用该集合的比较器彼此进行比较(或者,如果该集合没有比较器,则使用自然排序)。
如果fromElement或toElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
fromElement或
toElement为空,并且此集合不允许空元素
IllegalArgumentException
- 如果fromElement大于toElement ;
或者如果此设置本身具有限制范围,并且fromElement或toElement位于范围的范围之外
SortedSet<E> headSet(E toElement)
返回的集合将抛出一个IllegalArgumentException以尝试在其范围之外插入一个元素。
toElement
- 返回集合的高端点(独占)
ClassCastException
- 如果toElement与此集合的比较器不兼容(或如果该集合没有比较器,则toElement不实现Comparable
)。
如果toElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
toElement为空,并且此集合不允许空元素
IllegalArgumentException
- 如果这个设置本身具有有限的范围,并且
toElement位于范围的范围之外
SortedSet<E> tailSet(E fromElement)
返回的集合将抛出一个IllegalArgumentException尝试在其范围之外插入一个元素。
fromElement
- 返回集合的低端点(含)
ClassCastException
- 如果fromElement与此集合的比较器不兼容(或如果该集合没有比较器,则fromElement不实现Comparable
)。
如果fromElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
fromElement为空,并且此集合不允许空元素
IllegalArgumentException
- 如果这个设置本身有一个有限的范围,而
fromElement位于范围的范围之外
E first()
NoSuchElementException
- 如果此设置为空
E last()
NoSuchElementException
- 如果此设置为空
default Spliterator<E> spliterator()
Spliterator
。
该Spliterator
报告Spliterator.DISTINCT
, Spliterator.SORTED
和Spliterator.ORDERED
。 实施应记录其他特征值的报告。
该spliterator的比较(见Spliterator.getComparator()
)必须null
如果有序set的比较(见comparator()
)是null
。 否则,拼接器的比较器必须与排序集的比较器相同或者施加与排序集的比较器相同的总排序。
spliterator
在接口
Collection<E>
spliterator
在界面
Iterable<E>
spliterator
在界面
Set<E>
Iterator
。
分割器继承集合迭代器的故障快速属性。
拼接器的比较器与排序组的比较器相同。
创建的Spliterator
另外报告Spliterator.SIZED
。
Spliterator
另外报告
Spliterator.SUBSIZED
。
Spliterator
在这个排序集中的元素
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.