黑马程序员技术交流社区

标题: 实现Comparetor接口,为什么只要复写compare,而不用复写equ... [打印本页]

作者: 江南小道士    时间: 2015-1-14 08:19
标题: 实现Comparetor接口,为什么只要复写compare,而不用复写equ...
定义一个比较器,实现Comparator接口,只复写compare()方法,为什么不用复写equals()方法啊。
(Comparator接口有compare和equals两个方法)。      
是因为自定义的比较器继承了 Object 的缘故吗

作者: xiao飞    时间: 2015-1-14 11:09
equals 是对元素进行判断的,  而Compacter 是对元素进行排序的
作者: xiao飞    时间: 2015-1-14 11:11
不好意思  上面Comparator   写错了
作者: 碎流    时间: 2015-1-14 11:35
个人总结:
comparable 是让元素自身(元素)进行比较,你大还是我大,你长还是我长,这个对象都是元素自身....需要通过equals,compareTo,hashColde....这些方法都是比较的元素自身.
comparator 就相当于领导(集合),它是站在一个更高角度去看它里面的这些元素,所以能够给这些元素进行排序.而排序,它有自身的比较方法,比如compare,和equals,可以通过collections里面的一些比较方法进行控制操作,比如倒序.reverseOrder()倒序,还可以随机shuffle()....

一个是操作元素本身,一个是对整体元素进行操作.
个人的一些理解,获取有不对的地方,仅当参考.呵呵




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