前段時間用到了Comparable,是把json串轉換爲list後排序,後來又寫了一個通用方法來調用,而後就用到了Comparator,這裏記一下二者的區別使用。json
public class Person implements Comparable<Person> { private int id; private String name; private String date; public Person(int id, String name, String date) { this.id = id; this.name = name; this.date = date; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } @Override public int compareTo(Person o) { return this.date.compareTo(o.date); } }
public static void main(String[] args) { Person p1= new Person(1,"xiaobai","2017-9-2"); Person p2 = new Person(4,"zhangsan","2018-5-9"); Person p3 = new Person(2,"jack","2018-10-18"); List<Person> list = new LinkedList<>(); list.add(p1); list.add(p2); list.add(p3); //正序排列 // Collections.sort(list); //倒序排列 Collections.reverse(list); for(int i=0;i<3;i++){ System.out.println(list.get(i).getDate()); } }
執行結果爲ide
2018-10-18 2018-5-9 2017-9-2
public class Person2 { private int id; private String date; public Person2(int id, String date) { this.id = id; this.date = date; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }
public static void main(String[] args) { Person2 p1= new Person2(1,"2017-09-2"); Person2 p2 = new Person2(4,"2018-05-9"); Person2 p3 = new Person2(2,"2018-10-18"); List<Person2> list = new LinkedList<>(); list.add(p1); list.add(p2); list.add(p3); Collections.sort(list, new Comparator<Person2>() { @Override public int compare(Person2 o1, Person2 o2) { //正序排列 return o1.getDate().compareTo(o2.getDate()); //倒序排列 // return o2.getDate().compareTo(o1.getDate()); } }); for(int i=0;i<3;i++){ System.out.println(list.get(i).getDate()); } }
運行結果和Comparable是同樣的。this