Collectors.toMap 踩坑.md

如下代码中,使用 Collectors.toMap 对集合进行 map 转换,发现出现了 NPE 异常

Map<Long, Integer> wrongIdHomeworkTypeMap = questionInfoList.stream().collect(toMap(QuestionInfo::getWrongId, QuestionInfo::getHomeworkType, (v1, v2) -> v1));

查看 toMap 源码,发现会调用 map.merge() 方法

Collectors.toMap 踩坑.md_第1张图片

merge 方法中,标识了 value 不能为 null

Collectors.toMap 踩坑.md_第2张图片

1、使用 toMap 的时候,要注意 value 不能为 null(因为正常认知中,hashMap 是允许 value 为 null 的,所以这里需要注意)

2、toMap 时,最后需要带上 (v1, v2) -> v1 ,避免出现 key 冲突异常(因为正常认知中,hashMap 的 key 重复是会覆盖的,所以这里也需要注意)

你可能感兴趣的:(Java基础,java)