[英]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.