Почему нельзя удалять из коллекции в цикле for-each?
Я читал, что возникает исключение и это небезопасно. Но можно объяснить, почему именно так?
При попытке удаления конкретного элемента коллекции через for-each произойдет ошибка. Например, при удалении:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at Cat.main(Cat.java:25)
Общее правило, которое нужно запомнить:
нельзя проводить одновременно итерацию (перебор) коллекции и изменение ее элементов.
Иначе получается серьезная ошибка. Это из-за того, что когда элемент удален, размер List
уменьшается и индексы элементов меняются. И необходим более усовершенствованный вариант "пробегания" по элементам.
Стоит понимать, что цикл for
не является итератором.
Для более глубокого изучения необходимо изучить в спецификации метод .iterator()
Так же, в цикле for-each мы работаем с итерационной переменной, а не с элементом массива. Это так же важный момент.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Сначала когда запускаешь приложение все работает и тема и соответствие цветов все окНо когда вызываешь метод Update цвета и тема устанавливаются...
Как в HashMap при добавлении нового ключа создавать новый лист, который принадлежит только этому ключу, и как обращаться к нему?
У меня есть метод, который принимает и проверяет пин кодКогда, Я ввожу с клавиатуры значение, код просит его обработь IOException
Имеется интерфейс, который разделен на некоторые разделыВсе они помещены в LinearLayout