元素为零时如何避免列表迭代
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元素为零时如何避免列表迭代相关的知识,希望对你有一定的参考价值。
当列表包含零个元素并且避免在stream().filter()
lambda函数中进行迭代时,我正在寻找解决方案,例如:
List<Person> list = new ArrayList<>();
list.stream().filter(element -> element.getProperty().equals("bla").findFirst().get();
然后,如果列表的大小为零,但程序不为空,则程序将抛出NullPointerException
。
所以我使用传统的解决方案来检查list是否为empty,如:
if(list.size()> 0 )
list.stream.filter( .....
您是否知道不使用传统的if校验的其他解决方案?
更新
对不起,报告异常,实际上,异常是一个
java.util.NoSuchElementException:不存在值
而不是NullPointerExcption
。
更新2
正如VGR所说,我将改进代码
List<Person> list = new ArrayList<>();
list.stream().filter(element -> element.getName().equals("bla").findFirst().get();
和班级人员:
public class Person {
String name;
public getName(){
return this.name;
}
}
答案
您可以使用Optional#ifPresent
:
list.stream()
.filter(element -> element.getProperty().equals("bla"))
.findFirst()
.ifPresent(/** process element if exists */);
另一答案
我通过执行orElseGet()
解决了这个问题。
以上是关于元素为零时如何避免列表迭代的主要内容,如果未能解决你的问题,请参考以下文章