Junior — Middle
Hogyan lehet módosítani egy gyűjtemény tartalmát a bejárás során?
sobes.tech MI
Válasz az MI-től
Java-ban a gyűjtemény biztonságos módosításához az iterálás során ajánlott olyan iterátort használni, amely támogatja az elemek törlését vagy hozzáadását.
Elemek törlésének példája Iterator segítségével:
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (item.equals("b")) {
iterator.remove(); // biztonságos elem törlés iterálás közben
}
}
Az elemek hozzáadásához iterálás közben használható a ListIterator:
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
String item = listIterator.next();
if (item.equals("b")) {
listIterator.add("d"); // elem hozzáadása iterálás közben
}
}
Fontos, hogy ne módosítsa közvetlenül a gyűjteményt (pl. list.remove()), különben ConcurrentModificationException keletkezik.