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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-7-21 19:11 编辑

如题 Comparable,Comparator 的用法差别在哪啊。。。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3 赞一个!

查看全部评分

3 个回复

倒序浏览
Comparable接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
Comparator比较函数强行对某些对象 collection 进行整体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
呃。。感情楼上复制的api文档啊。
实现Comparable接口后,该类对象就具备了比较性,通过复写的compareTo方法来实现比较排序。这个方法定义在类里头,借用毕老师的那句话,当需要存到TreeSet中的元素不具备比较性,也就是本身没有实现Comparable接口,或者本身自带的比较性不是我们想要的。这时候就需要单独定义一个比较器,通过实现Comparator接口来创建,把这个比较器当作参数传递给集合,让集合具备比较性,这时候再往集合里存元素的时候就会自动调用比较器的比较方式。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
Comparable是接口。。自己写的对象要具备比较性就要实现Comparable接口的。。。Comparator是Comparable接口内的方法,。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马