第一:若 key重复,且你没有指定合并策略,将抛出异常
第二:若map的value为null,并且你没有做处理,将抛出NPE
解决方法
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<User>();
User user = new User();
user.setId(1L);
user.setName("oldNew");
list.add(user);
User user1 = new User();
user1.setId(1L);
user1.setName("newVal");
list.add(user1);
Map<Long, String> stringMap = list.stream().collect(Collectors.toMap(User::getId, User::getName,
(oldVal, newVal) -> oldVal));
//解决方案一: 不使用toMap()方法,直接在collect中构建map
Map<Long, String> map22 = list.stream().collect(
HashMap::new,
(map,node)->map.put(node.getId(),node.getName()),
HashMap::putAll
);
// 解决方案二:
Map<Long, String> ss = list.stream().collect(Collectors.toMap(
node -> Optional.ofNullable(node.getId()).orElse(1L),
// 如果为空 该怎么处理
node -> Optional.ofNullable(node.getName()).orElse(""),
(oldVal, newVal) -> oldVal)
);
System.out.println(stringMap);
}