Java 遍历对象的ArrayList,并返回该对象
我希望遍历对象的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
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所拥有的(返回第一个找到的对象)。