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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付博 中级黑马   /  2014-11-1 12:34  /  1194 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

compare()和compareTo()有什么区别?可以互换么?

12 个回复

倒序浏览
compare()里边可以再传进去一个比较器
回复 使用道具 举报
striker 发表于 2014-11-1 12:43
compare()里边可以再传进去一个比较器

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

嗯,明白了,谢谢
回复 使用道具 举报
2个方法吧  参数都不同   
回复 使用道具 举报
chensc 金牌黑马 2014-11-3 20:01:29
9#
学习学习!
回复 使用道具 举报
看这两个方法是哪个类的,然后看底层的源代码,对于Comparator的compare(T1,T2)来说它是用来实现加入set集合的元素的排序方式的,而对于String的compareTo(参数)实现的是比较两个字符串的比较
回复 使用道具 举报
chensc 金牌黑马 2014-11-12 19:02:52
11#
学习学习!
回复 使用道具 举报
学习学习
回复 使用道具 举报
不能饿compare()里可以放比较器
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马