Write and flow in l|

逐东

园龄:3年3个月粉丝:1关注:0

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 中国大陆许可协议进行许可。

posted @   逐东  阅读(9)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起