JAVA 8 stream findfirst()、findAny、get() 报 null point exception 空指针异常

说明:JAVA8 用stream流来循环取LIST值时,如果值为空时会报 null point exception异常,解决办法为提前判断该值是否为空。

下面是决断为空的写法。

 

场景说明:我有一个产品LIST,我要遍历此LIST,生成一个MAP,key为id,value为name

BEAN如下:

@Setter
@Getter
public class Product {
	private String id;
	private String name;
}

但当我不做处理时,如果其中有一个name属性为null就会 抛出了null point exception


List<Product> prdLst = new ArrayList<>();
Map<String, String> prdMap = prdLst.stream().collect(Collectors.toMap(Product :: getId, p -> p.getName()));

这是因为collect返回的元素Optional是不支持null类型的。

解决办法是用filter过滤一下,将为空的name过滤掉。

Map<String, String> prdMap = prdLst.stream().filter(p -> p.getName() != null)
                .collect(Collectors.toMap(Product :: getId, p -> p.getName()));

当然如果不是属性为空。而是对像为空。需要用filter(Objects :: nonNull)

    原文作者:songbob
    原文地址: https://blog.csdn.net/songbob/article/details/82755015
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞