对List排序(升序、降序)

基础类型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);

结果:

注意:当有多个属性排序时,先满足前一个排序,再对后一个排序

 

posted @ 2021-06-23 16:40  一只黄焖鸡  阅读(4623)  评论(0)    收藏  举报