迭代对象的ArrayList,并返回该对象

时间:2018-02-24 13:05:41

标签: 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 dependent of if statement
}

这不起作用,因为return语句在' if语句'内。但是我不能将return语句放在指定的行中,因为它依赖于if语句......

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

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

2 个答案:

答案 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;
}