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; }}新闻热点
疑难解答