[英]How to iterate through an ArrayList of Objects of ArrayList of Objects?
[英]Iterate through ArrayList of objects, and return the 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
}
這不起作用,因為return語句在'if語句'中。 但是我不能把return語句放在指定的行中,因為它依賴於if語句......
假設每種顏色總有一輛車。 所以總有一輛車我正在尋找,不多也不少。
如何確保始終找到一個對象並將其返回?
初始化要在循環外返回的Car對象。
Car carWithWantedColor = null;
for (Car car : carList){
if (wantedColor.equals(car.getColor())){
carWithWantedColor = car;
break;
}
}
return carWithWantedColor;
但如果它與你所說的相矛盾,並且如果傳遞了不存在的顏色,則返回null
。 通常應該避免IMO這類事情。
在這種情況下,我更願意使用Optional
。
如果要終止異常,請執行以下操作
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();
}
( IllegalStateException
可能是合適的。)
更常見的做法是不假設將找到汽車,並且當沒有找到時,讓方法返回null
(當然記錄它):
public Car findCar(String wantedColor){
for (Car car : carList){
if (wantedColor.equals(car.getColor())){
return car;
}
}
return null;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.