适合年龄
Human first = new Human("aaa", 11);
Human sec = new Human("bbb", 1111);
Human th = new Human("ccc", 19);
List<Human> humans = new ArrayList<>();
humans.add(first);
humans.add(sec);
humans.add(th);
// Сортировка по возрасту
Collections.sort(humans, new Comparator<Human>() {
@Override
public int compare(Human o1, Human o2) {
return o1.age - o2.age;
// return o1.name.compareTo(o1.name);
}
});
System.out.println("Сортировка по возрасту");
for (Human human : humans) {
System.out.println(human.getName() + " " + human.getAge());
}
// Сортировка по имени
Collections.sort(humans, new Comparator<Human>() {
@Override
public int compare(Human o1, Human o2) {
// return o1.age - o2.age;
return o1.name.compareTo(o1.name);
}
});
System.out.println("Сортировка по имени");
for (Human human : humans) {
System.out.println(human.getName() + " " + human.getAge());
}
结果
Сортировка по возрасту
aaa 11
ccc 19
bbb 1111
Сортировка по имени
aaa 11
ccc 19
bbb 1111
对给定的属性使用比较器更容易
Comparator.comparing(Function<? super T,? extends U> keyExtractor),为此只需将链接传递给所需属性/字段的 getter 方法: