Sobes.tech
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.