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,有人能解释为什么会发生这种情况,即使代码运行在同一个线程中吗?我怎么才能避免呢?
3 回答

狐的传说
TA贡献1804条经验 获得超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条经验 获得超3个赞
Iterator
Iterator<Item> iter = list.iterator();while(iter.hasNext()) { Item blah = iter.next(); if(...) { iter.remove(); // Removes the 'current' item }}

鸿蒙传说
TA贡献1865条经验 获得超7个赞
int size = list.size();for (int i = size - 1; i >= 0; i--) { if(remove){ list.remove(i); }}
添加回答
举报
0/150
提交
取消