غالبًا ما نريد حذف عناصر معينة من المجموعة. قد يكتب البعض هذا.
انسخ رمز الكود كما يلي:
تشغيل الفراغ العام (قائمة القائمة) {
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
إذا (str.equals("chengang")){
list.remove(str);
}
}
}
بمجرد تشغيل طريقة الكتابة هذه، سيتم الإبلاغ عن الاستثناء التالي:
استثناء في مؤشر الترابط "الرئيسي" java.util.ConcurrentModificationException
في java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
لأنه لا يمكن حذف عناصر القائمة أثناء وجودها في الحلقة. لاحقًا، قمت بذلك، وهي طريقة غبية جدًا. الفكرة هي كما يلي: إنشاء قائمة لتخزين العناصر المراد حذفها على وجه التحديد بعد الحلقة، استخدم طريقة List.removeAll لحذف العناصر. الرمز هو كما يلي:
انسخ رمز الكود كما يلي:
تشغيل الفراغ العام (قائمة القائمة) {
List RemoveList= new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
إذا (str.equals("chengang")){
RemoveList.add(str);
}
}
list.removeAll(removeList);
}
يمكن أن يحل هذا المشكلة بالفعل، لكن الطريقة مرهقة للغاية. في الواقع، يمكن أن تكون هناك طريقة أبسط وأكثر كفاءة، وهي استخدام طريقة Iterator.remove، كما يلي:
انسخ رمز الكود كما يلي:
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
إذا (str.equals("chengang")){
it.remove();
}
}
لذلك، كلما زادت معرفتك بأساسيات Java، أصبح كودك أبسط. على العكس من ذلك، إذا كانت التعليمات البرمجية الخاصة بك معقدة بشكل خاص، فمن المؤكد أن هناك خطأ ما في الطريقة أو التصميم.