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(); // ασφαλής διαγραφή
    }
}

Έτσι, η διαγραφή δεν θα διαταράξει τη λειτουργία του επεξεργαστή και δεν θα προκληθεί καμία εξαίρεση.