Junior — Middle
Co się dzieje, jeśli uniemożliwimy usuwanie elementów z kolekcji podczas jej iteracji?
sobes.tech AI
Odpowiedź od AI
Jeśli podczas iteracji po kolekcji w Java spróbujesz usunąć elementy bezpośrednio z niej (np. za pomocą metody kolekcji), spowoduje to ConcurrentModificationException. Dzieje się tak, ponieważ iterator śledzi zmiany w kolekcji, a usuwanie poza jego metodami narusza integralność iteracji.
Poprawny sposób usuwania elementów podczas iteracji to użycie metody remove() samego iteratora:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (warunek) {
iterator.remove(); // bezpieczne usunięcie
}
}
W ten sposób usuwanie nie zakłóci działania iteratora i nie wystąpi wyjątek.