先定义一个排序类:
@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())); }