先定义一个排序类:
@Data
@AllArgsConstructor
public class Student {
private String name;
private Boolean gender;
private Integer age;
private Double height;
private LocalDate birthday;
}
测试排序:
@Test
void sortTest() {
List<Student> studentList = Lists.newArrayList();
studentList.add(new Student("张飞", true, 13, 1.73, LocalDate.of(1988, 3, 23)));
studentList.add(new Student("李逵", false, 18, 1.31, LocalDate.of(1888, 6, 3)));
studentList.add(new Student("关羽", true, 19, 1.32, LocalDate.of(2001, 3, 11)));
studentList.add(new Student("林冲", false, 17, 1.37, LocalDate.of(2005, 10, 18)));
//1.按照年龄排序(降序)
studentList
.stream()
.sorted(Comparator.comparing(Student::getAge).reversed())
.forEach(student -> System.out.println(student.toString()));
//2.按照年龄排序(升序)
studentList
.stream()
.sorted(Comparator.comparing(Student::getAge))
.forEach(student -> System.out.println(student.toString()));
//2.先按年龄排序再按照身高排序(升序)多个字段排序
studentList.stream()
.sorted(Comparator.comparing(Student::getAge).thenComparing(Student::getHeight))
.forEach(student -> System.out.println(student.toString()));
}