java.util

接口
异常
错误
类型参数:
E - 此 set 维护的元素的类型
所有超级接口:
Collection<E>, Iterable<E>, Set<E>
所有已知子接口:
NavigableSet<E>
所有已知实现类:
ConcurrentSkipListSet, TreeSet

public interface SortedSet<E>
     
extends Set<E>

进一步提供关于元素的总体排序Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此接口是 SortedMap 的 set 对应接口)。

插入有序 set 的所有元素都必须实现 Comparable 接口(或者被指定的比较器所接受)。另外,所有这些元素都必须是可互相比较的:对于有序 set 中的任意两个元素 e1e2,执行 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 相同。无法保证强制实施此建议,因为接口不能包含构造方法。

注:一些方法返回具有受限范围的子集。这些范围区间是半开的,也就是说,它们包括低端点,但不包括高端点(如果适用)。如果需要一个闭区间(同时包含两个端点),且元素类型允许计算给定值的后继值,则只需要请求从 lowEndpointsuccessor(highEndpoint) 的子区间。例如,假设 s 是一个字符串有序 set。下面的语句将得到一个包含 s 中从 lowhigh(包括)所有字符串的视图:

   SortedSet<String> sub = s.subSet(low, high+"\0");
可使用类似的技术生成 开区间(两个端点都不包括)。下面的语句得到包含 s 中从 lowhigh(不包括)所有字符串的视图:
   SortedSet<String> sub = s.subSet(low+"\0", high);

此接口是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
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

Comparator<? super E> comparator()
返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的 自然顺序,则返回 null

返回:
用来对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null

subSet

SortedSet<E> subSet(E fromElement,
                    E toElement)
返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。(如果 fromElementtoElement 相等,则返回空的 set)。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

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

headSet

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

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

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

tailSet

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

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

参数:
fromElement - 返回 set 的低端点(包括)
返回:
此 set 的部分视图,其元素大于等于 fromElement
抛出:
ClassCastException - 如果 fromElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果 fromElement 没有实现 Comparable)。如果 fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
NullPointerException - 如果 fromElement 为 null,并且此 set 不允许 null 元素
IllegalArgumentException - 如果此 set 本身有范围限制,并且 fromElement 位于范围的边界之外

first

E first()
返回此 set 中当前第一个(最低)元素。

返回:
此 set 中当前第一个(最低)元素
抛出:
NoSuchElementException - 如果此 set 为空

last

E last()
返回此 set 中当前最后一个(最高)元素。

返回:
此 set 中当前最后一个(最高)元素
抛出:
NoSuchElementException - 如果此 set 为空