我有一个java函数,它根据对象的名称变量在数组列表中搜索对象
public Animal buscarAnimal(String animal){
for(Animal a: animais){
if(a.getNomeAnimal().equals(animal))return a;
}
return null;
我想知道是否可以使用foreach和lambdas,或者流,在一行中完成所有的比较和对象的返回。我试了一段时间,但我不是一个真正的专业人士,只得到了这么远的
animais.forEach((Animal a)->{if(a.getNomeAnimal().equals(animal)){return a;}});
然而,这给了我以下错误:
error: incompatible types: bad return type in lambda expression
使用Stream
和filter
,然后使用findFist
。这将返回一个Optional<Animal>
。如果您不想更改方法以返回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);