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(); // хориҷ кардани бехатартар
    }
}

Бо ин роҳ, хориҷ кардан ба кори итератор халал намерасонад ва ягон истисно ба вуҷуд намеояд.