侧边栏壁纸
  • 累计撰写 81 篇文章
  • 累计创建 20 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

java8 stream的多字段排序(踩坑)

心生向往
2020-11-13 / 0 评论 / 0 点赞 / 103 阅读 / 764 字

错误写法:

  List<Tt> sortedList = list.stream() .sorted(Comparator.comparing(Tt::getId)).sorted(Comparator.comparing(Tt::getLine))
                .collect(Collectors.toList());

正确写法

List<Tt> sortedList2 = list2.stream().sorted(Comparator.comparing(Tt::getId).thenComparing(Tt::getLine)).collect(Collectors.toList());

更新 2021/7/30

上面的写法,没有进行空指针处理,使用Comparator.nullsLast。如下解决

List<LogicWarehouse> logicWareHouseSorts = logicWarehouses.stream().sorted(
                    //Comparator.nullsLast 避免空指针
                    Comparator.comparing(LogicWarehouse::getPriority,Comparator.nullsLast(Integer::compareTo))
                    .thenComparing(LogicWarehouse::getCreateTime,Comparator.nullsLast(Date::compareTo))).collect(Collectors.toList());
0

评论区