java8 Stream流Collectors.toMap value为空报错
public class Test {public static void main(String[] args) {List<User> list = new ArrayList<>();User user = new User();user.setName("jack");list.add(user);// 报错list.stream().collect(Collect
·
public class Test {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
User user = new User();
user.setName("jack");
list.add(user);
// 报错
list.stream().collect(Collectors.toMap(User::getName,User::getAddress));
// 替换方案
list.stream().collect(HashMap::new,
(m, v)->m.put(v.getName(), v.getAddress()), HashMap::putAll);
}
static class User {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
}
java8 Stream Collectors.toMap在使用时如果value为null,会抛出空指针异常,算是一个bug
据说在java9已经修复,但是目前主流依旧是java8,所以替换方案如上
list.stream().collect(HashMap::new,
(m, v)->m.put(v.getName(), v.getAddress()), HashMap::putAll);
所以在使用Collectors.toMap时需要记住几点:
1、key不能有重复,否则会报错,因为HashMap的key不能重复
2、value不能为空,否则报空指针,算是java8的一个bug
原文链接:https://blog.csdn.net/qq_31086797/article/details/106649290
更多推荐
已为社区贡献1条内容
所有评论(0)