2.使用 Comparator 排序
Comparable 是类内部的比较方法,而 Comparator 是排序类外部的比较器。使用 Comparator 比较器,无需修改原 Person 类,只需要扩充一个 Person 类的比较器就行了,Comparator 的实现方法有以下两种:
- 新建 Comparator 比较器;
- 使用 Comparator 匿名类比较器。
其中,第二种实现方法要更简洁一些,我们通过下面的具体代码,来观察一下二者的区别。
2.1 新建 Comparator 比较器
public class ListSortExample2 { public static void main(String[] args) { // 创建并初始化 List List<Person> list = new ArrayList<Person>() {{ add(new Person(1, 30, "北京")); add(new Person(2, 20, "西安")); add(new Person(3, 40, "上海")); }}; // 使用 Comparator 比较器排序 Collections.sort(list, new PersonComparator()); // 打印 list 集合 list.forEach(p -> { System.out.println(p); }); } } /** * 新建 Person 比较器 */ class PersonComparator implements Comparator<Person> { @Override public int compare(Person p1, Person p2) { return p2.getAge() - p1.getAge(); } } @Getter @Setter @ToString class Person { private int id; private int age; private String name; public Person(int id, int age, String name) { this.id = id; this.age = age; this.name = name; } }
以上代码的执行结果,如下图所示:
本方法的核心实现代码如下: