首先來看一段for迴圈list。remove程式碼。
int
pos =
0
;
for (String
line
:
lineList) {
String[] info =
line
。
trim
()。split(
“:”
);
if
(info。length ==
2
) {
pos = lineList。indexOf(
line
);
lineList。remove(
line
);
}
}
上面的程式碼一眼看上去,寫的挺順手,其實這種方式存在問題,刪除元素後繼續迴圈,由於元素使用時發生併發修改,會丟擲異常報錯誤資訊ConcurrentModificationException。但刪除break跳出,則不會觸發報錯。
修改方式:
1、iterator遍歷
Iterator
while
(it。hasNext()){
String
line
= it。next();
String[] info =
line
。
trim
()。split(
“:”
);
if
(info。length ==
2
) {
it。remove();
}
}
2、倒序遍歷刪除
for(
int
i=lineList。size()-
1
;i>=
0
;i
——){
String[] info = lineList。get(i)。
trim
()。split(
“:”
);
if
(info。length ==
2
) {
lineList。remove(i);
}
}