元素为零时如何避免列表迭代

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()解决了这个问题。

以上是关于元素为零时如何避免列表迭代的主要内容,如果未能解决你的问题,请参考以下文章

如何在UL中迭代使用appendChild和片段LI?

如何将可迭代拆分为两个具有交替元素的列表

如何避免在列表迭代中使用get

13 个非常有用的 Python 代码片段

当 useRef 元素的高度大于零时的事件

当参数为空列表时,如何避免值限制错误?