ArrayList異常我有以下代碼:private String toString(List<DrugStrength> aDrugStrengthList) {
StringBuilder str = new StringBuilder();
for (DrugStrength aDrugStrength : aDrugStrengthList) {
if (!aDrugStrength.isValidDrugDescription()) {
aDrugStrengthList.remove(aDrugStrength);
}
}
str.append(aDrugStrengthList);
if (str.indexOf("]") != -1) {
str.insert(str.lastIndexOf("]"), "\n " );
}
return str.toString();}當我試圖運行它時,我得到ConcurrentModificationException,有人能解釋為什么會發(fā)生這種情況,即使代碼運行在同一個線程中嗎?我怎么才能避免呢?
3 回答

狐的傳說
TA貢獻1804條經(jīng)驗 獲得超3個贊
Iterator
for (DrugStrength aDrugStrength : aDrugStrengthList) { if (!aDrugStrength.isValidDrugDescription()) { aDrugStrengthList.remove(aDrugStrength); }}
for (Iterator<DrugStrength> it = aDrugStrengthList.iterator(); it.hasNext(); ) { DrugStrength aDrugStrength = it.next(); if (!aDrugStrength.isValidDrugDescription()) { it.remove(); }}

呼如林
TA貢獻1798條經(jīng)驗 獲得超3個贊
Iterator
Iterator<Item> iter = list.iterator();while(iter.hasNext()) { Item blah = iter.next(); if(...) { iter.remove(); // Removes the 'current' item }}

鴻蒙傳說
TA貢獻1865條經(jīng)驗 獲得超7個贊
int size = list.size();for (int i = size - 1; i >= 0; i--) { if(remove){ list.remove(i); }}
添加回答
舉報
0/150
提交
取消