java对List<Student>或者List<Map>进行排序

刺骨的言语ヽ痛彻心扉 2023-10-06 00:27 112阅读 0赞

对List(Map)进行排序

  1. public void sortLastOnlineList(CloudRInfoPo cloudRInfoPo, List<Map<String, Object>> result) {
  2. if (!StringUtils.isEmpty(cloudRInfoPo.getDuration()) || "desc".equals(cloudRInfoPo.getSort())) {
  3. //正序
  4. result.sort(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("lastOnlineTime"))));
  5. }
  6. if (!StringUtils.isEmpty(cloudRInfoPo.getDuration()) || "asc".equals(cloudRInfoPo.getSort())) {
  7. //倒序
  8. result.sort(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("lastOnlineTime"))).reversed());
  9. }
  10. }

对List进行排序

  1. List<Student> students = new ArrayList<>();
  2. Student student1 = new Student("六年级","Math","小张",1D);
  3. students.add(student1);
  4. Student student2 = new Student("三年级上","English","小钱",8D);
  5. students.add(student2);
  6. Student student3 = new Student("五年级","Chinese","小孙",6D);
  7. students.add(student3);
  8. 倒序
  9. List<Student> collect = students.stream().sorted(Comparator.comparing(Student::getMark).reversed()).collect(Collectors.toList());
  10. 控制台:
  11. 排序前:1.0|8.0|6.0|
  12. 排序后:8.0|6.0|1.0|
  13. 正序
  14. List<Student> collect = students.stream().sorted(Comparator.comparing(Student::getMark)).collect(Collectors.toList());
  15. 控制台:
  16. 排序前:1.0|8.0|6.0|
  17. 排序后:1.0|6.0|8.0|

需要注意的是:

排序字段为null时会报错!!!

需要对null值进行处理或过滤掉

发表评论

表情:
评论列表 (有 0 条评论,112人围观)

还没有评论,来说两句吧...

相关阅读

    相关 list进行排序

    我们在List里存入一些对象,比如person对象,若想要让这些对象按他们的age属性大小排序,不用我们自己实现,java已经帮我们实现了,我们只要实现Comparator接口