0

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

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
4

1 回答 1

2

使用aStream然后。这将返回一个. 如果您不想更改方法以返回(推荐),请使用来获取您的原始行为。filterfindFistOptional<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);
于 2020-12-18T07:53:28.530 回答