返回介绍

java.util 接口 SortedSet<E>

发布于 2019-10-04 09:51:37 字数 8667 浏览 890 评论 0 收藏 0

所有超级接口:
Collection<E>, Iterable<E>, Set<E>
所有已知实现类:
TreeSet

public interface SortedSet<E>
extends Set<E>
 

保证迭代器按照元素递增顺序遍历的集合,可以按照元素的自然顺序(参见 Comparable)进行排序,或者按照创建有序集合时提供的 Comparator 进行排序。要采用此排序,还要提供一些其他操作(此接口是 SortedMap 的集合对应物)。

插入有序集合的所有元素都必须实现 Comparable 接口(或者被指定的 Comparator 所接受)。另外,所有这些元素都必须是可相互比较的e1.compareTo(e2) (或 comparator.compare(e1, e2) )对于有序集合中的任意元素 e1e2 都不能抛出 ClassCastException 。试图违反这些限制将导致违反规则的方法或者构造方法调用抛出 ClassCastException

注意,如果有序集合正确实现了 Set 接口,则有序集合所保持的顺序(无论是否明确提供了比较器)都必须保持相等一致性相等一致性 的精确定义请参阅 Comparable 接口或 Comparator 接口)。这也是因为 Set 接口是按照 equals 操作定义的,但有序集合使用它的 compareTo (或 compare )方法对所有元素进行比较,因此从有序集合的观点来看,此方法认为相等的两个元素就是相等的。即使顺序没有保持相等一致性,有序集合的行为仍然 定义良好的,只不过没有遵守 Set 接口的常规协定。

所有通用有序集合实现类都应该提供 4 个“标准”构造方法:1) void(不带参数)构造方法,创建空的有序集合,按照元素的自然顺序 排序。2) 带有一个 Comparator 类型参数的构造方法,创建一个空的有序集合,根据指定的比较器排序。3) 带有一个 Collection 类型参数的构造方法,创建一个元素与参数相同的有序集合,按照元素的自然顺序排序。4) 带有一个 SortedSet 类型参数的构造方法,创建一个新的有序集合,元素及排序方法与输入的有序集合相同。除了 JDK 实现( TreeSet 类)遵循此建议外,无法保证强制实施此建议(因为接口不能包含构造方法)。

此接口是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
Set , TreeSet , SortedMap , Collection , Comparable , Comparator , ClassCastException

方法摘要
Comparator<? super E>comparator()

返回与此有序集合关联的比较器,如果使用元素的自然顺序,则返回 null

Efirst()

返回此有序集合中当前第一个(最小的)元素。

SortedSet<E>headSet(EtoElement)

返回此有序集合的部分视图,其元素严格小于 toElement

Elast()

返回此有序集合中最后一个(最大的)元素。

SortedSet<E>subSet(EfromElement, EtoElement)

返回此有序集合的部分视图,元素范围从 fromElement (包括)到 toElement (不包括)。

SortedSet<E>tailSet(EfromElement)

返回此有序集合的部分视图,其元素大于或等于 fromElement

从接口 java.util.Set 继承的方法
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray

方法详细信息

comparator

Comparator<? super E> comparator()
返回与此有序集合关联的比较器,如果使用元素的自然顺序,则返回 null
返回:
与有序集合关联的比较器,如果使用元素的自然顺序,则返回 null

subSet

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

如果用户试图插入超出指定范围的元素,则此方法返回的有序集合将抛出 IllegalArgumentException

注:此方法总是返回一个半开区间(包含低终结点而不包含高终结点)。如果需要一个闭区间(同时包括两个终结点),而且元素类型允许计算给定值的后继值,则只需要请求从 lowEndpointsuccessor(highEndpoint) 的子区间。例如,假设 s 是一个字符串有序集合。下面的语句将得到一个包含 s 中从 lowhigh (包括)所有字符串的视图:

 SortedSet sub = s.subSet(low, high+"\0");

可使用类似的技术生成开区间(两个终结点都不包括)。下面的语句得到包括 s 中从 lowhigh (不包括)所有 String 的视图:

 SortedSet sub = s.subSet(low+"\0", high);
参数:
fromElement - subSet 的低终结点(包括)。
toElement - subSet 的高终结点(不包括)。
返回:
有序集合中指定区间的视图。
抛出:
ClassCastException - 如果不能使用集合的比较器(或者如果此集合没有比较器,则使用自然顺序)比较 fromElementtoElement 。如果 fromElementtoElement 不能与集合中的当前元素比较,实现可能抛出此异常,但不要求。
IllegalArgumentException - 如果 fromElement 大于 toElement ;或者此集合本身是 subSet、headSet 或 tailSet,而 fromElementtoElement 不在 subSet、headSet 或 tailSet 指定的范围内。
NullPointerException - 如果 fromElementtoElementnull ,并且此有序集合不接受 null 元素。

headSet

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

如果用户试图插入超出指定范围的元素,则此方法返回的有序集合将抛出 IllegalArgumentException

注:此方法总是返回不包括(高)终结点的视图。如果需要包含此终结点的视图,而且元素类型允许计算给定值的后继值,则只需要请求以 successor(highEndpoint) 为界的 headSet。例如,假设 s 是一个字符串有序集合。下面的语句得到一个包含 s 中所有小于或等于 high 的字符串的视图:

    SortedSet head = s.headSet(high+"\0");
参数:
toElement - headSet 的高终结点(不包括)。
返回:
有序集合指定初始范围的视图。
抛出:
ClassCastException - 如果 toElement 与此集合的比较器不兼容(或者如果此集合没有比较器,而 toElement 没有实现 Comparable )。如果 toElement 不能和集合中的当前元素比较,实现可能抛出此异常,但不要求。
NullPointerException - 如果 toElementnull ,并且此有序集合不接受 null 元素。
IllegalArgumentException - 如果此集合本身是一个 subSet、headSet 或 tailSet,而 toElement 不在 subSet、headSet 或 tailSet 指定的范围之内。

tailSet

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

如果用户试图插入超出指定范围的元素,则此方法返回的有序集合将抛出 IllegalArgumentException

注:此方法总是返回包括(低)终结点的视图。如果需要不含此终结点的视图,而且元素类型允许计算给定值的后继值,则只需要请求以 successor(lowEndpoint) 为界的 tailSet。例如,假设 s 是一个字符串有序集合。下面的语句将得到一个包含 s 中严格大于 low 的所有字符串的视图:

    SortedSet tail = s.tailSet(low+"\0");
参数:
fromElement - tailSet 的低终结点(包括)。
返回:
有序集合指定的后部范围的视图。
抛出:
ClassCastException - 如果 fromElement 与此集合的比较器不兼容(或者如果此集合没有比较器,而 fromElement 没有实现 Comparable )。如果 fromElement 不能和集合中的当前元素比较,实现可能抛出此异常,但不要求。
NullPointerException - 如果 fromElementnull ,并且此有序集合不接受 null 元素。
IllegalArgumentException - 如果集合本身是一个 subSet、headSet 或 tailSet,而 fromElement 不在 subSet、headSet 或 tailSet 指定的范围之内。

first

E first()
返回此有序集合中当前第一个(最小的)元素。
返回:
有序集合中当前第一个(最小的)元素。
抛出:
NoSuchElementException - 有序集合是空的。

last

E last()
返回此有序集合中最后一个(最大的)元素。
返回:
有序集合中当前最后一个(最大的)元素。
抛出:
NoSuchElementException - 有序集合是空的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文