Java集合框架(七):SortedSet 源码分析

1、SortedSet 简述

SortedSet 接口扩展了 Set 接口并提供了元素的排序功能。

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

如果有序集合正确实现了 Set 接口,则有序集合所保持的顺序(无论是否明确提供了比较器)都必须保持相等一致性(相等一致性的定义请参阅 Comparable 接口或 Comparator 接口)。

这也是因为 Set 接口是按照 equals 操作定义的,但有序集合使用它的 compareTo 或 compare 方法对所有元素进行比较, 因此从有序集合的角度来看,此方法认为相等的两个元素就是相等的。
即使顺序没有保持相等一致性,有序集合的行为仍然是良好的,只不过没有遵守 Set 接口的常规协定。

所有通用有序集合实现类都应该提供四个“标准”构造方法:

1)一个void(无参数)构造函数,它根据元素的自然顺序创建一个空的有序集。

2)具有Comparator类型的单个参数的构造函数,它创建一个根据指定的比较器排序的空的有序集。

3)具有Collection类型的单个参数的构造函数,它创建一个具有与其参数相同元素的新排序集,并根据元素的自然顺序进行排序。

4)具有SortedSet类型的单个参数的构造函数,它创建一个新的有序集,其具有与输入有序集相同的元素和相同的顺序。 由于接口不能包含构造函数,因此无法强制执行此建议。

除了 JDK 中实现类(ConcurrentSkipListSet,TreeSet)遵循此建议外,无法保证强制实施此建议(因为接口不能包含构造方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值