Junior — Middle
რა ხდება, თუ შევზღუდავთ ელემენტების წაშლას კოლექციიდან მისი გადავლების დროს?
sobes.tech AI
პასუხი AI-სგან
თუ Java-ში კოლექციის გადათვლას ცდილობთ და პირდაპირ ამოიღებთ ელემენტებს (მაგალითად, კოლექციის მეთოდით), ეს გამოიწვევს ConcurrentModificationException. ეს ხდება იმიტომ, რომ ინტერატორი აკონტროლებს კოლექციის ცვლილებებს, და მისი მეთოდების გარეთ ამოღება არღვევს ინტერაციის მთლიანობას.
სწორი მეთოდი ელემენტების ამოღებისთვის გადათვლის დროს არის ინტერატორის remove() მეთოდის გამოყენება:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
თუ (შერტი) {
iterator.remove(); // უსაფრთხო ამოღება
}
}
ამ გზით, ამოღება არ შეუშლის ხელს ინტერატორის მუშაობას და არ მოხდება გამონაკლისი.