أتذكر أن هناك مشكلة في استخدام حلقة لـ for لحذف العناصر في القائمة ، ولكن يمكنك استخدام الحلقة المحسنة. ثم وجدت اليوم أنه تم الإبلاغ عن خطأ عند استخدامه ، ثم ذهبت لتشجيع العلم ، ثم وجدت أن هذا كان سوء فهم. دعنا نتحدث عن ذلك أدناه. . تواصل وقفز مباشرة إلى نهاية المقالة. انظر إلى الملخص. .
هناك ثلاث طرق لقوائم Traverse Loop في Java ، وتعزيز الحلقة (أي ، المعروفة عادةً باسم Foreach Loop) ، والتمرير التكراري.
1. لقائمة اجتياز الحلقة
لـ (int i = 0 ؛ i <list.size () ؛ i ++) {if (list.get (i) .equals ("del")) list.remove (i) ؛}المشكلة في هذه الطريقة هي أنه بعد حذف عنصر ما ، يتغير حجم القائمة ، وتغييرات الفهرس الخاصة بك ، مما سيجعلك تفوت عناصر معينة أثناء اجتياز. على سبيل المثال ، عندما تقوم بحذف العنصر الأول وتواصل الوصول إلى العنصر الثاني وفقًا للمؤشر ، لأن العناصر بعد العلاقة المحذوفة يتم نقلها واحدًا تلو الآخر ، وهو الوصول الفعلي إلى العنصر الثالث. لذلك ، يمكن استخدام هذه الطريقة عند حذف عنصر معين ، ولكنه غير مناسب عند حذف عناصر متعددة في حلقة.
2. تعزيز الحلقة
لـ (سلسلة x: قائمة) {if (x.equals ("del")) list.remove (x) ؛}المشكلة في هذه الطريقة هي أنه بعد حذف العنصر ، سيتم الإبلاغ عن رسالة الخطأ من خلال الاستمرار في الحلقة ، لأن التعديل المتزامن يحدث عند استخدام العنصر ، مما يؤدي إلى إلقاء استثناء. ومع ذلك ، إذا كنت تستخدم Break للقفز مباشرة بعد الحذف ، فلن يتم تشغيل خطأ.
3. اجتياز التكرار
iterator <string> it = list.iterator () ؛ بينما (it.hasnext ()) {string x = it.next () ؛ if (x.equals ("del")) {it.remove () ؛ }}يمكن أن يتم حلق هذه الطريقة وحذفها بشكل طبيعي. ولكن تجدر الإشارة إلى أنه إذا كنت تستخدم طريقة إزالة التكرار ، إذا كنت تستخدم طريقة إزالة القائمة ، فستقوم أيضًا بالإبلاغ عن خطأ ConversedifificationException المذكور أعلاه.
تلخيص:
(1) إذا قمت بحلق لحذف عنصر معين في القائمة ، فيمكنك استخدام أي من الطرق الثلاث ، ولكن يجب عليك الانتباه إلى مختلف المشكلات التي تم تحليلها أعلاه عند استخدامها.
(2) إذا قمت بحلق لحذف عناصر متعددة في القائمة ، فيجب عليك استخدام طريقة التكرار.
الملخص أعلاه للطريقة المذكورة أعلاه لحذف العناصر في القوائم في Java هو كل المحتوى المشترك من قبل المحرر. آمل أن يعطيك مرجعًا وآمل أن تدعم wulin.com أكثر.