有点坑啊!~

慎用啊,可以用其他工具包提供的toMap(待补充,回头我找找)

Collectors.toMap使用注意事项:

  • 不要用两参数方法,用三参数方法,否则会在key冲突时报错
  • 注意默认merge方法不允许null值

解决方案:

  • 将null替换为默认值
    例如Optional.ofNullable().orElse()
  • 自定义收集器
    Map<String, Integer> studentMap = students.stream().collect(HashMap::new, (map, student) -> map.put(student.getName(), student.getAge()), HashMap::putAll);
  • 遍历收集
    Map<String, Object> map = new HashMap<>();
    list.forEach(o -> map.put(o.getName(), o.getAge()));