遍历对象的ArrayList,并返回对象

Jus*_*tus 2 java return arraylist object

我想遍历对象的 ArrayList,然后我想返回具有特定属性的对象。

我试过这个:

public Car findCar(String wantedColor){
    for (Car car : carList){
        if (wantedColor.equals(car.getColor())){
            return car;
        }
    }
    // Can't put return statement here because it's dependent of if statement
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为 return 语句位于“if 语句”内。但是我不能将 return 语句放在指定的行中,因为它依赖于 if 语句...

假设每种颜色总是有一辆汽车。所以我总是在寻找一辆汽车,不多也不少。

如何确保总能找到一个对象并将其返回?

use*_*er7 5

初始化要在循环外返回的 Car 对象。

Car carWithWantedColor = null;
for (Car car : carList){
    if (wantedColor.equals(car.getColor())){
        carWithWantedColor =  car;
        break;
    }
}
return carWithWantedColor;
Run Code Online (Sandbox Code Playgroud)

但是如果它与你所说的相矛盾,并且如果传递了一个不存在的颜色,这将返回 null. 通常应避免此类事情 IMO。

我更愿意Optional在这种情况下使用。

如果要以异常终止,请执行以下操作

carList.stream()
       .filter(car -> car.getColor().equals(wantedColor))
       .findFirst()
       .orElseThrow(() -> new RuntimeException("Invalid color"));
Run Code Online (Sandbox Code Playgroud)