Часто мы хотим удалить определенные элементы из коллекции. Некоторые могут это написать.
Скопируйте код кода следующим образом:
общественная недействительная операция (список списка) {
for (Итератор it = list.iterator(); it.hasNext();) {
Строка str = (String)it.next();
если (str.equals("чэнган")){
список.удалить(стр);
}
}
}
Как только этот метод записи будет запущен, будет сообщено о следующем исключении:
Исключение в потоке «основной» java.util.ConcurrentModificationException
в java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
Потому что элементы списка нельзя удалить, пока он находится в цикле. Позже я сделал это, очень глупый метод. Идея такая: создать список для хранения удаляемых элементов. После цикла используйте метод List.removeAll для удаления элементов. Код выглядит следующим образом:
Скопируйте код кода следующим образом:
общественная недействительная операция (список списка) {
Список RemoveList = новый ArrayList ();
for (Итератор it = list.iterator(); it.hasNext();) {
Строка str = (String)it.next();
если (str.equals("чэнган")){
RemoveList.add(str);
}
}
list.removeAll(removeList);
}
Это действительно может решить проблему, но метод слишком громоздкий. На самом деле может быть более простой и эффективный метод, который заключается в использовании метода Iterator.remove, следующим образом:
Скопируйте код кода следующим образом:
for (Итератор it = list.iterator(); it.hasNext();) {
Строка str = (String)it.next();
если (str.equals("чэнган")){
это.удалить();
}
}
Итак, чем больше вы знаете основы Java, тем проще будет ваш код. Напротив, если ваш код особенно сложен, значит, что-то не так с методом или дизайном.