遍歷List集合刪除元素的出現報錯
遍歷List集合刪除元素的時候會發生索引越界異常或內容遍歷不全等問題。
例子:
List<String> al = new ArrayList<String>();
al.add("12");
al.add("1");
al.add("13");
int size = al.size();
問題1:索引越界異常Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
for(int i=0;i<size;i++){
if("1".equals(al.get(i)))
al.remove(i);
}
問題分析:滿足條件后刪除一個元素,集合只有兩個元素,只能al.get(0),al.get(1),而al.get(2)獲取元素時索引越界了。有同學可能想把上面的size個數改成al.size()就行了,雖然解決了索引越界問題,但出現了遍歷不全問題。
問題2:內容遍歷不完全
for(int i=0;i<al.size();i++){
if("1".equals(al.get(i)))
al.remove(i);
}
問題分析:滿足條件后刪除一個元素,不再循環第三個元素
正確的代碼:
Iterator<String> it = al.iterator();
while(it.hasNext()){
if("1".equals(it.next()))
it.remove();
}