Comparable和Comparator的区别

来源:互联网 发布:备考注册会计师 知乎 编辑:程序博客网 时间:2024/06/05 00:47

Comparable和Comparator的区别可以理解为,一个是内部比较,一个是外部比较。一个是在对象自身内实现的方法,一个是在第三方对象上实现的该方法。
存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。

可以看到,在比较的时候,comparable就会去使用this指针去比较自己和其他。
Comparator就是两个对象的比较了。

public class Domain implements Comparable<Domain>{    private String str;    public Domain(String str)    {        this.str = str;    }    public int compareTo(Domain domain)    {        if (this.str.compareTo(domain.str) > 0)            return 1;        else if (this.str.compareTo(domain.str) == 0)            return 0;        else             return -1;    }    public String getStr()    {        return str;    }}
public class DomainComparator implements Comparator<Domain>{    public int compare(Domain domain1, Domain domain2)    {        if (domain1.getStr().compareTo(domain2.getStr()) > 0)            return 1;        else if (domain1.getStr().compareTo(domain2.getStr()) == 0)            return 0;        else             return -1;    }}
0 0
原创粉丝点击