【发布时间】:2016-11-19 17:51:18
【问题描述】:
如何从下面的程序中解析ConcurrentModificationException。
我需要一个列表,其中第一个元素是 "Znk",然后是排序后的列表。
我明白,我得到这个是因为我在同一个迭代中添加和删除。但是我该如何解决这个问题并获得所需的输出。
public class ListSwapIndex {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> swapIndex = new ArrayList<String>();
ArrayList<String> swapIndextemp = new ArrayList<String>();
swapIndex.add("Ank");
swapIndex.add("Znk");
swapIndex.add("Bnk");
swapIndex.add("Dnk");
swapIndex.add("Enk");
swapIndex.add("Lnk");
for (String string : swapIndex) {
if(string.equals("Znk")){
swapIndextemp.add(string);
swapIndex.remove(string);
}
}
swapIndextemp.addAll(swapIndex);
System.out.println(swapIndextemp);
}
}
【问题讨论】:
-
不,这是因为您正在同时修改数组。请改用向量或同步数组列表。
-
查看 this 可能重复的“无法使用增强的 for 循环存档”