lambda表达式对list排序

594 阅读1分钟

lambda表达式对list排序

List<StaffPageConfigBo> staffPageConfigVos =staffPageConfigBos.stream().sorted(Comparator.comparing(StaffPageConfigBo::getModifyTime).reversed()).collect(Collectors.toList());

定义待排序的bean

public class TestBean { private Integer id; private String name; private Integer sortNum; } 2 一个排序失败的CASE list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null) .collect(Collectors.toList()).sort(Comparator.comparing(TestBean::getSortNum));

3 正确的排序 排序成功:

List listNew = list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null) .sorted(Comparator.comparing(TestBean::getSortNum)).collect(Collectors.toList()); 总结下:

list.stream.filter.collect.sort 没排序,list.stream.filter.sorted.collect 排序了

当然如果不需要剔除sortNum为空的对象,可以直接:

list.sort(Comparator.comparing(TestBean::getSortNum)); 当然这种排序一旦有sortNum为空的对象,就会抛出空指针异常。

如果确实要排序带有空值的对象、并不想把这些对象剔除、又不想有NPE怎么办呢?

1)正序,且空值排前面

list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.naturalOrder()))); 2)正序,且空值排后面

list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.naturalOrder()))); 3)倒序,且空值排前面

list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.reverseOrder()))); 4)倒序,且空值排后面

list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.reverseOrder()))); ———————————————— 版权声明:本文为CSDN博主「一次编写 到处调试」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/u010266988/…