基础类型List排序
List<Integer> list = Arrays.asList(3,1,5,8,6,10); log.info("未排序的list:{}",list); //升序 list.sort(Comparator.naturalOrder()); log.info("升序的list:{}",list); //降序 list.sort(Comparator.reverseOrder()); log.info("降序的list:{}",list);
结果:
对list中的某个属性排序
Student student1 = new Student("张三",19,175); Student student2 = new Student("李四",18,165); Student student3 = new Student("王五",20,170); List<Student> studentList = Lists.newArrayList(); studentList.add(student1); studentList.add(student2); studentList.add(student3); log.info("未排序的list:{}",studentList); //对年龄降序排序 List<Student> orderAgeDescList = studentList.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); log.info("对年龄降序排序后:{}",orderAgeDescList); //对年龄升序排序 List<Student> orderAgeAscList = studentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList()); log.info("对年龄升序排序后:{}",orderAgeAscList); //对年龄降序排序,对身高升序排序 List<Student> orderAgeDescAndHeightAscList = studentList.stream().sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getHeight)).collect(Collectors.toList()); log.info("对年龄降序排序,对身高升序排序后:{}",orderAgeDescAndHeightAscList);
结果:
注意:当有多个属性排序时,先满足前一个排序,再对后一个排序