校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 多态和执行顺序
题目

Comparable和Comparator接口是干什么的?列出它们的区别。

解答

Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明已经存在的对象小于,等于,大于输入对象。
Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

C 6条回复 评论
波风小蒙

这么久了终于弄明白这个问题

发表于 2022-05-06 23:00:00
0 0
匀斋

这道题出得真好

发表于 2021-09-12 10:00:00
0 0
咳咳咳

不错,值得学习参考

发表于 2021-09-12 07:55:00
0 0
真吾

看comparable和comparator的源码可以知道,
1.他们返回的类型不一样,一个返回int型,一个返回boolean
2.比较的东西不一样,一个在类内部比较,一个在外部比较

发表于 2020-10-30 11:36:40
0 0
梁利晖

二者均是对集合进行比较和排序的接口。不同点是:
comparable接口是在内部类通过重写compareTo方法实现的,而comparator接口则是在外部类通过重写compare与equal方法实现的。
comparable接口实现较简单,但对于多元素排序不方便,因为在重写compareTo方法时事先定义好了元素比较顺序;comparator接口实现较复杂,可能定义多个外部类,但对于多元素使用起来很方便。

发表于 2020-06-22 16:49:16
0 0
胡俟

comparable接口和comparator接口都是用来实现集合元素的比较和排序的。两者的区别就在于两者的实现方法不同。对于排序的依据元素,分为两种情况:
对于单元素的类:int,float,double,char,String等数据类型,排序依据就是它相应的这个单元素。
对于多元素的类:例如,我们定义一个Student类,它的属性有int类型的age和String类型的name等,这时候就需要我们自己指定一个排序依据元素。
下面通过代码来体现两者在多元素的类的时候的不同。

发表于 2020-06-22 16:48:54
0 0