黑马程序员技术交流社区

标题: 关于比较方法。。。 [打印本页]

作者: 付博    时间: 2014-11-1 12:34
标题: 关于比较方法。。。
compare()和compareTo()有什么区别?可以互换么?

作者: striker    时间: 2014-11-1 12:43
compare()里边可以再传进去一个比较器
作者: 付博    时间: 2014-11-1 22:52
striker 发表于 2014-11-1 12:43
compare()里边可以再传进去一个比较器

再传一个比较器有什么意义?是遇到结果为0的时候判断其他条件?
作者: qq8921310    时间: 2014-11-1 23:05
视频里讲很很清楚的,两个有什么区别,以及存在的意义。
作者: 颜仔    时间: 2014-11-2 00:34
不能互换的,compare是Comparator的方法,compareTo是Comparable的方法。前者是自定义比较器,让容器自身具有比较性,后者是让对象具有比较性。要比较必须覆盖对应的方法,不能混淆。
作者: 陈永赛    时间: 2014-11-2 14:43
楼上正解,你集合中的元素对象如果需要具备比较性,那么,元素对象就要实现Comparable接口,覆盖接口中的compareTo方法,在该方法里定义如何比较进行排序。当元素对象自身具备的比较方法不是你需要的,则可以自定义比较器,自定义的比较器需要实现Comparator接口,覆盖其中的compare方法,在该方法里定义你需要如何比较,进行排序。在你创建集合时,把你自定义的比较器作为集合的参数传递进去,那么,当你取出元素时,就回按照你的比较器排序。
作者: 付博    时间: 2014-11-2 19:25
陈永赛 发表于 2014-11-2 14:43
楼上正解,你集合中的元素对象如果需要具备比较性,那么,元素对象就要实现Comparable接口,覆盖接口中的co ...

嗯,明白了,谢谢
作者: ll_shitou    时间: 2014-11-3 12:57
2个方法吧  参数都不同   
作者: win_top1    时间: 2014-11-9 22:23
看这两个方法是哪个类的,然后看底层的源代码,对于Comparator的compare(T1,T2)来说它是用来实现加入set集合的元素的排序方式的,而对于String的compareTo(参数)实现的是比较两个字符串的比较
作者: newLife    时间: 2014-11-12 19:43
学习学习
作者: .ヤ牧马人〃    时间: 2014-11-24 18:18
不能饿compare()里可以放比较器




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