一个更为强大的Comparator,可以说再也不用写侵入式的Comparable接口,而且连Comparator的
我先来看需要排序的类:
public class Person {
public enum Sex {
MALE, FEMALE
}
private String name;
private LocalDate birthday;
private Sex gender;
private String e
编写一个
public class ComparotorTest {
private static List roster;
@BeforeClass
public static void setup() {
roster = Person.createRoster();
for (Person p : roster) {
p.printPerson();
}
}
}
对Person的单个字段进行排序
@Test
public void testWithComparing() {
System.out.println("Comparator.comparing");
roster.sort(Comparator.comparing(Person::getBirthday));
roster.
对Person的
@Test
public void testWithComparing() {
System.out.println("Comparator.comparing");
roster.sort(Comparator.comparing(Person::getBirthday).thenComparing(Person::getName));
roster.stream().forEach(person -> person.printPerson());
}
对其中的某个字段倒序
@Test
public void testWithComparing() {
System.out.println("Comparator.comparing");
roster.sort(Comparator.comparing(Person::getBirthday).reversed().thenComparing(Person::getName));
roster.stream().forEach(person -> person.printPerson());
}
让其中的一个字段为空的时候放在前面或者后面
@Test
public void testWithComparing() {
System.out.println("Comparator.comparing");
roster.sort(Comparator.comparing(Person::getBirthday,Comparator.nullsLast(Comparator.reverseOrder())).thenComparing(Person::getName));
roster.stream().forEach(person -> person.printPerson());
}