[英]ArrayList for loop iterator causing infinite loop
我试图遍历一个 ArrayList 并打印其中的每个元素,但它只输出 ArrayList 中的第一个元素。 然后是一个无限循环,它不断打印出第一个元素。
ArrayList<String> startTime = new ArrayList<String>();
for (int i = 0; i < startTime.size(); i++) {
String getTime = startTime.get(i);
getTime = convertTime(getTime);
startTime.add(i, getTime);
System.out.println(startTime.get(i));
}
绝对使用高级 for 循环:
ArrayList<String> startTime = new ArrayList<String>();
for(String aStartTime: startTime){
// do something
}
当您执行startTime.add(i, getTime)
您将在i
位置添加一个元素。 这意味着在您的下一次迭代中,您的列表中将有一个额外的元素。 当您增加计数器并检查startTime.size()
,它总是会是true
。 因此你的无限循环。
作为建议,如果您想添加getTime
元素,您可能需要使用某种辅助结构,例如另一个 List。
尝试使用这个 for 循环:
for(int i=0,n=startTime.size();i<n;i++){
//your for-loop code here
}
当您向startTime
添加元素时,它会增加其大小。 因此,它提高了i
必须无限满足的边界。 在我的示例中, n
将在循环开始时设置为startTime
的大小,并且不会随着循环执行而改变。
您可以尝试向后循环(从最后一个元素到第一个元素),例如:
// assume that I have ArrayList variable named *list*
for(int i = list.size() - 1 ; i >= 0 ; i--){
list.add(//something);
}
这段代码不会给你一个无限循环,因为即使你的列表大小不断变化,循环控制变量也永远不会改变( i >= 0 )。 下限将始终为 0,而i将向 0 递减
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.