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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李敬卫 中级黑马   /  2012-12-8 14:40  /  1462 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Comparable和Comparator  这两个比较器,怎么判断什么时候用那个?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

倒序浏览
第一种:让元素自身具有比较性。
Comparable是一个接口,里面只有一个对象,就是compareTo方法,返回的是int类型。

第二种:
可以自己创造一个容器,实现Comparator接口,覆盖compare方法。


记住:
Comparable对应的是compareTo
Comparator对应的是compare

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
刘芮铭 + 1 赞一个!
李敬卫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 赵保磊 于 2012-12-8 15:21 编辑

理论上来说用这两个都可以,一般情况是我们在用二叉树数据结构的集合存储自定义对象时用这两个
比如:一个自定义一个Person类,存储在TreeSet集合中(或者存储的集合类型事先不确定用哪一种),这是我们为了程序的可扩展性一般让Person类实现comparable,
并重写其compareTo()方法。而在后期我们发现用TreeSet集合存储时,Comparable自定义的比较方法不是我们所想要的,而又不想改变Person类本身是,可以重新
写一个自定义比较方法,这是可以用Comparator,并重写其compare()方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马