Sobes.tech
Junior — Middle

Šta se dešava ako sprečimo uklanjanje elemenata iz kolekcije tokom njenog prolaska?

sobes.tech АИ

Одговор од АИ

Ако током прегледа колекције у Јави покушате да избршете елементе директно из ње (на пример, преко метода колекције), то ће довести до ConcurrentModificationException. То се дешава зато што итератор прати промене у колекцији, а брисање ван његових метода нарушава интегритет итерације.

Правилан начин брисања елемената током прегледа је коришћење метода remove() самог итератора:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (услов) {
        iterator.remove(); // безбедно брисање
    }
}

На овај начин, брисање неће пореметити рад итератора и неће доћи до изузетка.