使用stream的filter对List里面对象属性值过滤出现空指针问题解决办法
问题描述:
下面代码会出先空指针问题NullPointerException
Optional<TestWarn> any2 = deviceWarnsTest.stream().filter(x->x.getDeviceId().equals(e.getDeviceId().longValue())&&x.getIsHandled().equals(false)&&x.getExtDeviceId().equals(e.getDeviceExtId().longValue())&&x.getDeviceComponentId()==null).findAny();
if (any2.isPresent()) {
e.setIsExtWarn(true);
}
原因分析:
由于list集合数据中对象的属性可能会出现null的情况.
解决方案:
解决办法很简单,就是多添加一个属性判断,修改成下面这样,多添加x.getDeviceId()!=null和x.getExtDeviceId()!=null就好了啊
下面代码会出先空指针问题NullPointerException
Optional<TestWarn> any2 = deviceWarnsTest.stream().filter(x->x.getDeviceId()!=null&&x.getDeviceId().equals(e.getDeviceId().longValue())&&x.getIsHandled().equals(false)&&(x.getExtDeviceId()!=null&&x.getExtDeviceId().equals(e.getDeviceExtId().longValue()))&&x.getDeviceComponentId()==null).findAny();
if (any2.isPresent()) {
e.setIsExtWarn(true);
}