我有一个包含许多行数据的List。我想要做的只是返回第一个迭代值而不返回任何其他值。
public int getnumber() {
for (Bike temp : bikes) {
return temp.getBikeID();
break;
}
}
我尝试了类似上面的内容..但是break语句无法访问。我怎么能实现这个目标?
我知道我仍然可以在循环之外声明一个变量,然后在循环中赋值,但返回的值将是最后一行。
答案 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;
}