简谈Comparable和Comparator区别

对于Comparable和Comparator这连个相似的接口,还是做一下比较比较好:

  Comparable Comparator
(1)只包含一个compareTo()方法,此方法可以给两个对象排序(负,0,正) 有compare()和equals()两个方法,compare()方法用来给两个参数排序(负,0,正)

(2)如果有一个Person类要实现比较

写在Person类内部:

public class Person implements Comparable{

  private int id;

  

  public int getId(){

    return id;

  }

  public int compareTo(Object o){

    return this.id - ((Person) o).getId;

  }

}

写在Person类外部,Person类不需要有任何变化

public class Person{

  private int id;

  public int getId(){

    return id;

  }

}

public class PersonComparator implements Comparator{

  public int compare(Object o1, Object o2){

    return ((Person) o1).getId - ((Person) o2).getId;

  }

}

(3)使用,personList为Person的集合对象:

Collections.sort(personList)即可进行排序

Collections.sort(personList, new PersonComparator())即可进行排序

其中Comparator使用的是设计模式中的策略模式。

原文地址:https://www.cnblogs.com/gsbm/p/4758519.html