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

Java 遍历对象的ArrayList,并返回该对象,java,object,arraylist,return,Java,Object,Arraylist,Return,我希望遍历对象的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 d

我希望遍历对象的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
}
这不起作用,因为return语句位于“if语句”内。但是我不能把return语句放在指定的行中,因为它依赖于if语句

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


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

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

Car carWithWantedColor = null;
for (Car car : carList){
    if (wantedColor.equals(car.getColor())){
        carWithWantedColor =  car;
        break;
    }
}
return carWithWantedColor;
但是如果它与您所说的相矛盾,并且如果传递了不存在的颜色,则返回
null
。这类事情通常应该避免

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

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

carList.stream()
       .filter(car -> car.getColor().equals(wantedColor))
       .findFirst()
       .orElseThrow(() -> new RuntimeException("Invalid color"));
假设每种颜色都有一辆车。所以我一直在寻找一辆车,不多也不少

这是一个奇怪的假设。但如果是这样的话,那么您所拥有的一切都很好,只是您需要在最后抛出一个异常:

public Car findCar(String wantedColor){
    for (Car car : carList){
        if (wantedColor.equals(car.getColor())){
            return car;
        }
    }
    throw new RelevantException();
}
(可能比较合适。)

更正常的做法是假设将找到一辆车,并在未找到时让方法返回
null
(当然,记录它):

public Car findCar(String wantedColor){
    for (Car car : carList){
        if (wantedColor.equals(car.getColor())){
            return car;
        }
    }
    return null;
}

如果总是有一个匹配,那么在she方法的末尾抛出一个异常来表示一个错误就行了。谢谢所有的答案!现在它运行良好,我只能接受一个答案,但它们都帮助我更好地理解它:)非常好,解释得很好。非常好!投赞成票的。。。(顺便说一句,可以捕获例外情况)++对于
您的列表也可能包含具有该颜色的汽车列表,在这种情况下,请使用
.collect(Collectors.toList())@Evilguy,是的,没错。但是我想继续使用OP所拥有的(返回第一个找到的对象)。