我想迭代对象的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语句......
假设每种颜色总有一辆车。所以总有一辆车我在寻找,不多也不少。
如何确保始终找到一个对象并将其返回?
答案 0 :(得分:4)
初始化要在循环外返回的Car对象。
beforeRouteEnter(to, from, next){
if (/^\/\w+\/medies(\/)?$/.test(from.path) || /^\/\w+\/roulette(\/)?$/.test(from.path)) {
EventBus.$on('selected-media', result => {
console.log(result); // <--- It's work!
});
next();
} else {
next('/');
}
},
但如果它与您所说的相矛盾,并且如果传递了不存在的颜色,则返回Car carWithWantedColor = null;
for (Car car : carList){
if (wantedColor.equals(car.getColor())){
carWithWantedColor = car;
break;
}
}
return carWithWantedColor;
。通常应该避免这些事情IMO。
在这种情况下,我更愿意使用Optional
。
如果您想以例外终止,请执行以下操作
null
答案 1 :(得分:3)
假设每种颜色总有一辆车。所以总有一辆车我在寻找,不多也不少。
这是一个奇怪的假设。但如果是这样的话,那么除了你需要在最后抛出一个例外之外,你所拥有的就好了。
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;
}