comparable若一个类实现了该接口,该类便支持排序
而comparator是比较器,该类实现该接口,就相当于建立了一个比较器。
package com.lwx.lambda; import java.util.Arrays; public class PersonComparable implements Comparable<PersonComparable>{ private String name; private Integer age; private PersonComparable(String name, Integer age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public int compareTo(PersonComparable o) { return o.age-this.age; } public static void main(String[] args) { PersonComparable[] ps = new PersonComparable[]{new PersonComparable("xiaoming",10), new PersonComparable("xiaohong",12),new PersonComparable("xiaohua",14)}; Arrays.sort(ps); for(PersonComparable p : ps){ System.out.println(p.getName()+":"+p.getAge()); } } }
package com.lwx.lambda; import java.util.Comparator; public class PersonComparator implements Comparator<Person>{ @Override public int compare(Person o1, Person o2) { return o1.getAge()-o2.getAge(); } }
package com.lwx.lambda; import java.util.Arrays; public class Person{ private String name; private Integer age; private Person(String name, Integer age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public static void main(String[] args) { Person[] ps = new Person[]{new Person("xiaoming",10), new Person("xiaohong",12),new Person("xiaohua",14)}; Arrays.sort(ps, new PersonComparator()); for(Person p : ps){ System.out.println(p.getName()+":"+p.getAge()); } } }