A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-12 20:05  /  721 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

感觉泛型的限定 有点难理解  Comparable 和Comparator 上的泛型!!

2 个回复

倒序浏览
Comparable  是个接口 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
建议(虽然不是必需的)最好使自然排序与 equals 一致。这是因为在使用自然排序与 equals 不一致的元素(或键)时,没有显式比较器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表)违背了根据 equals 方法定义的集合(或映射表)的常规协定。
抛出: ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。

Comparator接口,强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
这个是当使用具有与 equals 不一致的强行排序能力的 Comparator 对有序 set(或有序映射)进行排序时,应该小心谨慎。假定一个带显式 Comparator c 的有序 set(或有序映射)与从 set S 中抽取出来的元素(或键)一起使用。如果 c 强行对 S 进行的排序是与 equals 不一致的,那么有序 set(或有序映射)将是行为“怪异的”。尤其是有序 set(或有序映射)将违背根据 equals 所定义的 set(或映射)的常规协定。抛出:ClassCastException - 如果参数的类型不允许此 Comparator 对它们进行比较。仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
探花 发表于 2014-4-12 21:27
Comparable  是个接口 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的  ...

thank
很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马