我试图将项目添加到列表的列表。 partitions
是Strings
列表的LinkedList
。我试图将一个项目添加到分区列表中某个分区的开头,但我得到ConcurrentModificationException
,尽管我使用的是名为partitionsCopy
的列表副本。Java - ConcurrentModificationException在添加到列表时
有没有办法做到这一点?所有我能找到的关于如何删除项目或使用ListIterator
添加项目的例子,但在特定的位置ListIterator
int index = 0;
for (List<String<?>> partition : partitions) {
if (index > 0) {
partitionsCopy.get(index).add(0, lastPartition.get(lastPartition.size() - 1));
}
lastPartition = partition;
index++;
}
partitionsCopy看起来像这样
List<List<String<?>>> partitionsCopy = new LinkedList<List<String<?>>>();
partitionsCopy.addAll(partitions);
这是我不能添加项目我从jtahlborn的回答中得出了什么结论。
for (List<String<?>> partition : partitions) {
List<String<?>> list = new ArrayList<String<?>>();
list.addAll(partition);
partitionsCopy.add(list);
}
是分区复制一个深层复制? – 2013-05-01 13:09:49
http://stackoverflow.com/questions/993025/java-adding-elements-to-a-collection-during-iteration – 2013-05-01 13:10:35
'partitionsCopy'确实是List的一个副本,而不仅仅是另一个引用'List'?你在哪里初始化该变量? – 2013-05-01 13:10:37