Junior — Middle
Τι συμβαίνει αν εμποδίζουμε τη διαγραφή στοιχείων από τη συλλογή κατά τη διάρκεια της επανάληψής της;
sobes.tech AI
Απάντηση από AI
Αν κατά τη διάρκεια της επανάληψης μιας συλλογής σε Java προσπαθήσετε να διαγράψετε στοιχεία απευθείας από αυτήν (για παράδειγμα, μέσω της μεθόδου της συλλογής), θα προκληθεί μια ConcurrentModificationException. Αυτό συμβαίνει επειδή ο επεξεργαστής παρακολουθεί τις αλλαγές στη συλλογή, και η διαγραφή εκτός των μεθόδων του παραβιάζει την ακεραιότητα της επανάληψης.
Ο σωστός τρόπος διαγραφής στοιχείων κατά τη διάρκεια της επανάληψης είναι να χρησιμοποιήσετε τη μέθοδο remove() του ίδιου του επεξεργαστή:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (συνθήκη) {
iterator.remove(); // ασφαλής διαγραφή
}
}
Έτσι, η διαγραφή δεν θα διαταράξει τη λειτουργία του επεξεργαστή και δεν θα προκληθεί καμία εξαίρεση.