集合数据分组同时转map,Collectors.toMap的value为null,报空指针异常
Map<String, Map<String, String>> ybMap = ybs.stream().collect(Collectors.groupingBy(SsjdYb::getG0pspidProj,Collectors.toMap(SsjdYb::getSbqj, SsjdYb::getJdsm)));
求方案!
这个算是java8版本的bug,java9版本之后已经修复。推荐几种解决办法:
1、如果是null,就设置成一个特定值,然后再处理
2、使用collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner)去收集,这个可允许null值
3、使用Optional类封装,收集成值类型为Optional的Map,然后处理
例子: