Извините за заголовок.Я пытаюсь написать программу, которая заменяет элементы из массива A элементами из массива B того же размера, а также удаляет эти элементы из массива B. Ничего особенного, просто проверяю что-то перед моим экзаменом.
Я попытался сделать это с помощью вложенных циклов for, первый из которых был "традиционным циклом for", а второй - "расширенным циклом for", но по какой-то причине вместо замены элемента 0 из массива A на элемент 0из массива B он заменяет все элементы из массива A на элемент 2 из массива B. И при попытке удалить элементы выдает ошибку.Любая идея, почему это происходит?
Вывод включен в блок кода, потому что stackoverflow просто не позволит мне публиковать, если это не так.
И строка 30 для "(String s: list2)».Я вынул заголовок.
public class Test {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("one");
list1.add("two");
list1.add("three");
List<String> list2 = new ArrayList<>();
list2.add("four");
list2.add("five");
list2.add("six");
System.out.println(list1);
System.out.println(list2);
for(int i = 0; i < list1.size(); i++){
for(String s : list2){
list1.set(i, s);
//list2.remove(i);
}
}
System.out.println(list1);
}
}
Вывод без строки "list2.remove (i)":
[one, two, three]
[four, five, six]
[six, six, six]
Вывод с "list2.remove (i)"строка:
[one, two, three]
[four, five, six]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at Test.main(Test.java:30)
C:\Users\izabe\AppData\Local\NetBeans\Cache\10.0\executor-
snippets\run.xml:111: The following error occurred while executing this
line:
C:\Users\izabe\AppData\Local\NetBeans\Cache\10.0\executor-
snippets\run.xml:94: Java returned: 1