목록 목록에 항목을 추가하려고합니다. partitions
은 Strings
목록의 LinkedList
입니다. 파티션 목록의 파티션 중 하나의 시작 부분에 항목을 추가하려고하는데 partitionsCopy
이라는 목록의 복사본을 사용하고 있는데도 ConcurrentModificationException
이 표시됩니다.Java - ConcurrentModificationException이 목록에 추가 될 때
이렇게 할 방법이 있습니까? 모든 I 항목을 제거하거나 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);
처럼 보이는 ListIterator
가 여기에 특정 위치에 항목을 추가 할 수 없습니다 jtahlborn의 대답에서 나왔습니다. 그건 당신이 실제로 수정중인 목록이 그대로
for (List<String<?>> partition : partitions) {
List<String<?>> list = new ArrayList<String<?>>();
list.addAll(partition);
partitionsCopy.add(list);
}
partitionsCopy는 전체 복사본입니까? –
http://stackoverflow.com/questions/993025/java-adding-elements-to-a-collection-during-iteration –
'partitionsCopy'는 실제로 동일한 목록에 대한 다른 참조가 아니라'List' 사본입니다. 'List'? 그 변수를 어디에 초기화합니까? –