java中Comparable和Comparator区别和总结
Posted 逐东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());
以上是关于java中Comparable和Comparator区别和总结的主要内容,如果未能解决你的问题,请参考以下文章