stream sorted排序时包含null问题

对一个集合进行排序时,如果使用sorted函数,排序结果会返回null

List<Integer> integerList = Arrays.asList(1, 3, null, 2);
System.out.println(integerList);
List<Integer> collect = integerList.stream().distinct().sorted().collect(Collectors.toList());
System.out.println(collect);

//执行结果
[1, 3, null, 2]
null

利用排序函数,可以把null放到第一个(Comparator.nullsFirst),或者最后一个(Comparator.nullsLast)

List<Integer> integerList = Arrays.asList(1, 3, null, 2);
System.out.println(integerList);
List<Integer> collect = integerList.stream().distinct().sorted(Comparator.comparing(o -> o, Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
System.out.println(collect);

//执行结果
[1, 3, null, 2]
[1, 2, 3, null]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容