首次迭代后中断循环

时间:2014-04-01 13:53:26

标签: java

我有一个包含许多行数据的List。我想要做的只是返回第一个迭代值而不返回任何其他值。

public int getnumber() {    
    for (Bike temp : bikes) {
        return temp.getBikeID();
        break;
    }
}

我尝试了类似上面的内容..但是break语句无法访问。我怎么能实现这个目标?

我知道我仍然可以在循环之外声明一个变量,然后在循环中赋值,但返回的值将是最后一行。

5 个答案:

答案 0 :(得分:4)

这是因为return之前的break语句。 return语句将执行到调用方法。所以,break语句无法访问。

您无需迭代即可获取集合的第一个值。第一个索引是0。所以,就这样吧

if(bikes!=null && bikes.size() > 0)
return bikes.get(0).getBikeId();
return -1; // `-1` denotes failure or put anything relevant to failure

答案 1 :(得分:3)

不要循环并直接尝试:

 return bikes.get(0).getBikeId();

答案 2 :(得分:2)

试试这个 -

// null and size check to make sure if there is something on 0 index
return bikes != null && bikes.size > 0 ? bikes.get(0).getBikeId() : 0;

答案 3 :(得分:1)

只需删除break语句即可。事实上,这就是你所需要的:

for (Bike temp : bikes) return temp.getBikeID();
return -1;

代替return -1将您喜欢的行为置于“未找到”案例中。

答案 4 :(得分:1)

您可以直接通过.get()访问您的列表索引。如果您只需要一个完全特定元素,则无需进行迭代:

public int getnumber() {
    int result = 0;

    if (bikes != null && bikes.size() > 0)
        result = bikes.get(0).getBikeID();

    return result;
}

甚至更短,使用三元运算符condition ? true : false;):

public int getnumber() {
    return (bikes != null && bikes.size() > 0) ? bikes.get(0).getBikeId() : 0;
}