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 语句...
假设每种颜色总是有一辆汽车。所以我总是在寻找一辆汽车,不多也不少。
如何确保总能找到一个对象并将其返回?
初始化要在循环外返回的 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)