Как мне решить 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);
}
}
Нет, это потому, что вы одновременно изменяете массив. Вместо этого используйте вектор или синхронизированный arraylist. – Ioan
См. [Это] (http://stackoverflow.com/questions/18448671/how-to-avoid-concurrentmodificationexception-while-removing-elements-from-arr) возможный дубликат «Невозможно архивировать с расширенным циклом» – malatesh