java中Comparable和Comparator区别和总结
他俩都是用于做比较的接口。
但是区别在于,实现Comparable表示该类支持排序,实现Comparator是定义一个某类的比较器。
所以,Comparable相当于“内部比较器”,Comparator相当于“外部比较器”。
Comparable
实现了该接口,表示该类支持比较排序。实现了此接口的类的对象的列表或数组可以通过Collection.sort或Arrays.sort进行自动排序。
package java.lang;
import java.util.*;
public interface Comparable<T>
{
public int compareTo(T o);
}
举例: Person实现以age字段的排序。
@Lombook
public class Person implements Comparable<Person>
{
String name;
int age;
@Override
public int compareTo(Person p)
{
return this.age-p.getAge();//nagative:<; positive:>; 0:=;
}
//进行比较:
Arrays.sort(persons);
Comparator
如果要实现控制某个类的次序,而该类本身不支持排序,即没有实现Comparable。则可以建立一个该类的比较器来进行排序。这个比较器只需要实现Comparator接口即可。
该接口定义如下
package java.util;
public interface Comparator<T>
{
int compare(T o1, T o2); //必须实现
boolean equals(Object obj); //可以不实现
}
定义person类的年龄比较器
public class PersonComparator implements Comparator<Person>
{
@Override
public int compara(Person o1,Person o2){
return o1.getAge() - o2.getAge();
}
}
//进行比较:
Arrays.sort(persons,new PersonComparator());
本文作者:逐东
本文链接:https://www.cnblogs.com/vuds/p/15941524.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步