首页 > 试题广场 >

Comparable和Comparator接口是干什么的?列

[问答题]
请说明Comparable和Comparator接口的作用以及它们的区别。
Comparable和Comparator接口是用来对自定义的class比较大小的。
Comparator和 Comparable的区别:Comparator定义在Person的外部而Comparable定义在Person的内部。
Comparable定义在Person的内部。public class Persion implements Comparable {..比较Person的大小..},因为已经实现了比较器,那么Person现在是一个可以比较大小的对象了,它的比较功能和String完全一样,可以随时随地的拿来比较大小,因为Person现在自身就是有大小之分的。Collections.sort(personList)可以得到正确的结果。
Comparator是定义在Person的外部的,此时Person类的结构不需要有任何变化,如public class Person{ String name; int age },然后另外定义一个比较器:public PersonComparator implements Comparator() {..比较Person的大小..},在PersonComparator里面实现了怎么比较两个Person的大小. 所以用这种方法,要对一个 personList进行排序的时候除了要传递personList过去,还需要把PersonComparator传递过去,因为怎么比较Person的大小是在PersonComparator里面实现的,如Collections.sort( personList , new PersonComparator() )。
发表于 2019-07-07 13:53:17 回复(0)
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。  Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。
发表于 2019-05-05 13:28:25 回复(0)
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。  Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。
发表于 2019-04-27 13:31:39 回复(0)
Comparator定义在Person的外部而Comparable定义在Person的内部。
发表于 2019-05-02 21:18:01 回复(0)
Comparable和Comparator 都是用来实现集合中的排序的 只是Comparable是在集合内部定义的方法实现的排序 Comparator是在集合外部实现的排序 所以 如想实现排序 就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo() Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作) Comparator是一个专用的比较器 当这个对象不支持自比较或者自比较函数不能满足你的要求时 你可以写一个比较器来完成两个对象之间大小的比较
发表于 2019-04-29 18:03:21 回复(0)
Comparable {形容词adj 类似的}相当于“内部比较器” 比较x.compareTo(y); Comparator {名词n 比较装置}相当于“外部比较器” 比较compare(T o1, T o2) 。 ——来自:https://blog.csdn.net/u010859650/article/details/85009595
编辑于 2019-04-29 07:57:03 回复(0)
Comparable和Comparator 都是用来实现集合中的排序的 只是Comparable是在集合内部定义的方法实现的排序 Comparator是在集合外部实现的排序 所以 如想实现排序 就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo() Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作) Comparator是一个专用的比较器 当这个对象不支持自比较或者自比较函数不能满足你的要求时 你可以写一个比较器来完成两个对象之间大小的比较
发表于 2019-04-28 22:52:30 回复(0)
实现了comparable支持排序,comparactor是用来比较对象
发表于 2019-02-20 15:57:35 回复(0)
再容器添加数据时,有的需要进行排序,添加的数据所在类必须实现Comparable接口,重新compareTo方法
编辑于 2019-02-14 12:45:05 回复(0)