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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 四顾行者 中级黑马   /  2014-6-5 23:00  /  1303 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个是实现Comparable接口,覆写compareTo()方法。一个是实现Comparator接口,覆写compare()方法。
那么什么情况下用前一种方式,什么情况下用后一种方式,什么情况下这两种都可以?

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

5 个回复

倒序浏览
comparable是比较性,由被比较的对象类实现。
comparator是比较器,需要自定义一个比较器实现comparator接口。

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报 1 0
实现comparable是具备了比较性,而自定义的比较器需要实现comparator

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报 1 0
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
当两种排序都存在时,以比较器为主。

就像Student 类中写了一个compareTo方法,但是现在你想要另一种方式排序;
但改原有代码是不推荐的,我们只需要添加一个比较器实现新的排序规则,然后传给集合就好了;

当以后又需要另一种排序,就在写一个新的比较器,传给集合;
这样做提高的代码的扩展性。

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报 1 0
never615 发表于 2014-6-6 00:26
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
当两种排序都存 ...

感谢层主,你说的很详细,给你32个赞
回复 使用道具 举报
comparable 相当于自己来比较。
comparator 相当于让别人来帮忙比。

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