E
- 此 set 维护的元素的类型
public interface SortedSet<E>
进一步提供关于元素的总体排序 的 Set
。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator
进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此接口是 SortedMap
的 set 对应接口)。
插入有序 set 的所有元素都必须实现 Comparable 接口(或者被指定的比较器所接受)。另外,所有这些元素都必须是可互相比较的:对于有序 set 中的任意两个元素 e1 和 e2,执行 e1.compareTo(e2)(或 comparator.compare(e1, e2))都不得抛出 ClassCastException。试图违反此限制将导致违反规则的方法或者构造方法调用抛出 ClassCastException。
注意,如果有序 set 要正确实现 Set 接口,则有序 set 所维持的顺序(无论是否提供了明确的比较器)都必须与 equals 一致。(有关与 equals 一致 的精确定义,请参阅 Comparable 接口或 Comparator 接口。)这是因为 Set 接口是按照 equals 操作定义的,但有序 set 使用它的 compareTo(或 compare)方法对所有元素进行比较,因此从有序 set 的角度来看,此方法认为相等的两个元素就是相等的。即使顺序与 equals 不一致,有序 set 的行为仍然是 定义良好的,只不过没有遵守 Set 接口的常规协定。
所有通用有序 set 实现类都应该提供 4 个“标准”构造方法:1) void(无参数)构造方法,它创建一个空的有序 set,按照元素的自然顺序进行排序。2) 带有一个 Comparator 类型参数的构造方法,它创建一个空的有序 set,根据指定的比较器进行排序。3) 带有一个 Collection 类型参数的构造方法,它创建一个新的有序 set,其元素与参数相同,按照元素的自然顺序进行排序。4) 带有一个 SortedSet 类型参数的构造方法,它创建一个新的有序 set,其元素和排序方法与输入的有序 set 相同。无法保证强制实施此建议,因为接口不能包含构造方法。
注:一些方法返回具有受限范围的子集。这些范围区间是半开的,也就是说,它们包括低端点,但不包括高端点(如果适用)。如果需要一个闭区间(同时包含两个端点),且元素类型允许计算给定值的后继值,则只需要请求从 lowEndpoint 到 successor(highEndpoint) 的子区间。例如,假设 s 是一个字符串有序 set。下面的语句将得到一个包含 s 中从 low 到 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
方法摘要 | |
---|---|
Comparator<? super E> |
comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。 |
E |
first() 返回此 set 中当前第一个(最低)元素。 |
SortedSet<E> |
headSet(E toElement) 返回此 set 的部分视图,其元素严格小于 toElement。 |
E |
last() 返回此 set 中当前最后一个(最高)元素。 |
SortedSet<E> |
subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。 |
SortedSet<E> |
tailSet(E fromElement) 返回此 set 的部分视图,其元素大于等于 fromElement。 |
从接口 java.util.Set 继承的方法 |
---|
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
方法详细信息 |
---|
Comparator<? super E> comparator()
SortedSet<E> subSet(E fromElement, E toElement)
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。
fromElement
- 返回 set 的低端点(包括)
toElement
- 返回 set 的高端点(不包括)
ClassCastException
- 如果无法使用此 set 的比较器(如果 set 没有比较器,则使用自然顺序)比较
fromElement 和
toElement。如果
fromElement 或
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
NullPointerException
- 如果
fromElement 或
toElement 为 null,并且此 set 不允许 null 元素
IllegalArgumentException
- 如果
fromElement 大于
toElement;如果此 set 本身有范围限制,并且
fromElement 或
toElement 位于范围的边界之外
SortedSet<E> headSet(E toElement)
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。
toElement
- 返回 set 的高端点(不包括)
ClassCastException
- 如果
toElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果
toElement 没有实现
Comparable
)。如果
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
NullPointerException
- 如果
toElement 为 null,并且此 set 不允许 null 元素
IllegalArgumentException
- 如果此 set 本身有范围限制,并且
toElement 位于范围的边界之外
SortedSet<E> tailSet(E fromElement)
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。
fromElement
- 返回 set 的低端点(包括)
ClassCastException
- 如果
fromElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果
fromElement 没有实现
Comparable
)。如果
fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
NullPointerException
- 如果
fromElement 为 null,并且此 set 不允许 null 元素
IllegalArgumentException
- 如果此 set 本身有范围限制,并且
fromElement 位于范围的边界之外
E first()
NoSuchElementException
- 如果此 set 为空
E last()
NoSuchElementException
- 如果此 set 为空