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区别和总结的主要内容,如果未能解决你的问题,请参考以下文章

[java]Comparable和Comparator

Comparator

Comparable接口

集合框架(TreeSet原理)

Java集合-案例

自然排序Comparable的使用