是否可以将此表达式压缩为一行?

Is it possible to compress this expression to one line?

我有这个 java 函数,它根据对象的名称变量在数组列表中搜索对象

public Animal buscarAnimal(String animal){ 
        for(Animal a: animais){
            if(a.getNomeAnimal().equals(animal))return a;
        }
        return null;

我想知道是否可以使用 foreach 和 lambda 或流,在一行中完成所有比较和对象的返回。 我尝试了一段时间,但我不是真正的专业人士,只做到了这一点

animais.forEach((Animal a)->{if(a.getNomeAnimal().equals(animal)){return a;}});

然而,这给了我以下错误:

error: incompatible types: bad return type in lambda expression

使用 Streamfilter 然后 findFist。这 return 是 Optional<Animal>。如果您不想将方法更改为 return 和 Optional<Animal>(推荐),请使用 orElse(null) 获得原始行为。

return
    animais.stream().filter(a -> a.getNomeAnimal().equals(animal))
    .findFirst()
    .orElse(null);

一行:

return animais.stream().filter(a -> a.getNomeAnimal().equals(animal)).findFirst().orElse(null);