كيفية إزالة العناصر من المجموعة في حلقة دون ConcurrentModificationException في Java؟
مرحباً بالجميع! أنا مطور Java مبتدئ وواجهت خطأ غريباً جداً. أكتب برنامجاً بسيطاً: لدي قائمة من السلاسل النصية، وأريد إزالة جميع العناصر التي تبدأ بحرف "A". يبدو الأمر منطقياً، لكن عند التشغيل يظهر ConcurrentModificationException.
هذا هو الكود الخاص بي:
```java
List list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Avocado", "Cherry"));
for (String fruit : list) {
if (fruit.startsWith("A")) {
list.remove(fruit);
}
}
```
يحدث الخطأ في التكرار بعد الإزالة. قرأت أنه لا يمكن تعديل المجموعة أثناء حلقة for-each، لكن كيف يمكن إزالة العناصر بشكل صحيح؟ أحتاج إلى تعديل القائمة الأصلية وليس إنشاء قائمة جديدة.
أرجو إرشادي، كيف يمكن فعل ذلك بشكل صحيح؟ ما هي الطرق الآمنة لإزالة العناصر من المجموعة أثناء اجتيازها؟ شكراً مسبقاً!
<<>>
المشكلة: لماذا يحدث ConcurrentModificationException
لقد واجهت مشكلة كلاسيكية