Sobes.tech
Junior — Middle

Kas notiek, ja aizliedz elementu no kolekcijas izņemšanu tās iterācijas laikā?

sobes.tech AI

Atbilde no AI

Ja Java kolekcijas pārlūko laikā mēģināt dzēst elementus tieši no tās (piemēram, izmantojot kolekcijas metodi), tas novedīs pie ConcurrentModificationException. Tas notiek tāpēc, ka iterators seko kolekcijas izmaiņām, un dzēšana ārpus tā metožu bojā iterācijas integritāti.

Pareizais veids, kā dzēst elementus pārlūkošanas laikā, ir izmantot pašā iteratora remove() metodi:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    ja (nosacījums) {
        iterator.remove(); // droša dzēšana
    }
}

Tādējādi dzēšana nesabojās iteratora darbību un nenotiks nekāda izņēmuma.