黑马程序员技术交流社区

标题: 比较器 [打印本页]

作者: 四顾行者    时间: 2014-6-5 23:00
标题: 比较器
一个是实现Comparable接口,覆写compareTo()方法。一个是实现Comparator接口,覆写compare()方法。
那么什么情况下用前一种方式,什么情况下用后一种方式,什么情况下这两种都可以?
作者: a110bc    时间: 2014-6-5 23:08
comparable是比较性,由被比较的对象类实现。
comparator是比较器,需要自定义一个比较器实现comparator接口。
作者: 阿苏勒    时间: 2014-6-6 00:24
实现comparable是具备了比较性,而自定义的比较器需要实现comparator
作者: never615    时间: 2014-6-6 00:26
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
当两种排序都存在时,以比较器为主。

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

当以后又需要另一种排序,就在写一个新的比较器,传给集合;
这样做提高的代码的扩展性。
作者: 四顾行者    时间: 2014-6-6 23:08
never615 发表于 2014-6-6 00:26
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
当两种排序都存 ...

感谢层主,你说的很详细,给你32个赞
作者: kongyan4696    时间: 2014-6-7 08:41
comparable 相当于自己来比较。
comparator 相当于让别人来帮忙比。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2