Sobes.tech
Junior — Middle

Жыйымдан элементтерди алып салууну тоскоолдосо, эмне болот?

sobes.tech AI

AIден жооп

Эгер Javaда коллекцияны кайталоо учурунда элементтерди түз эле алып салууга аракет кыласыз (мисалы, коллекциянын методу аркылуу), бул ConcurrentModificationException менен аяктайт. Бул, итератор коллекциядагы өзгөртүүлөрдү көзөмөлдөп жаткандыктан жана анын методтору сыртында жасалган алып салуулар итерациянын бүтүндүгүн бузгандыктан болот.

Эң туура жол — итератордун өзү колдонгон remove() методун колдонуу:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (шарт) {
        iterator.remove(); // коопсуз алып салуу
    }
}

Мындай жол менен алып салуу итератордун ишине тоскоолдук кылбайт жана ката пайда болбойт.