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
提交
取消
