对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);

结果:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM