检查每个对象,满足第一个条件时 return 为真,否则 return 为假

check each object, return true when the first condition is met, else return false

我有一个很好用的方法。这是它的样子。

private ArrayList<Car> carsInStore ; //in car class have setter/getter/quals/Constructor.
public boolean checkIfcarInStore(Car c) {   
    for (Car car : carsInStore) {
        if(car.equals(c)){
            return true;
        }
    }
}

我想将其切换到 Lambda。

但是我不清楚if(条件)returntrue或者returnfalse外面怎么填

而且我知道我也可以在直播中做到这一点。谁能举个例子?

如果您真的想使用 lambda,这应该有效,否则您可以在评论中找到答案。


private ArrayList<Car> carsInStore ;

public boolean checkIfcarInStore(Car c) {   
    return carsInStore.stream().anyMatch(c::equals);
    }
 }

您可以将方法 checkIfcarInStore() 替换为 Predicate,它是一个 函数接口 ,表示布尔条件,可以实现为 lambda 表达式:

Predicate<Car> isInStore = car -> carsInStore.contains(car);

或作为方法参考:

Predicate<Car> isInStore = carsInStore::contains;

如果根据您的作业说明,您需要一个方法 checkIfcarInStore(),可以将 predicate 声明为一个字段并在方法内部使用:

private ArrayList<Car> carsInStore ;
private Predicate<Car> isInStore = car -> carsInStore.contains(car);
    
public boolean checkIfCarInStore(Car car) {
    return isInStore.test(car);
}