java.lang.NullPointerException
at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:907)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
roleEntityList.stream().collect(Collectors.groupingBy(entity->Optional.ofNullable(entity.getSourceType()).orElse("empty")));
另外还发现Comparator.comparing也有空指针异常
sysRoleEntityList.stream().collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysRoleEntity::getId)))).stream().collect(Collectors.toList());
找了很久也没发现这个问题,
另外使用distinct()会跳过这个问题,把bug留下后面代码
//去重
sysRoleEntityList.stream().distinct().collect(Collectors.toList());
最后发现原因:是 list 添加了null对象