对于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使用的是设计模式中的策略模式。