هناك العديد من الطرق لاجتياز العناصر وحذفها في القائمة ، وستنشأ المشكلات عند استخدامها بشكل غير صحيح. دعونا نلقي نظرة على الأشكال التالية من حذف العناصر في القائمة:
1. قم بإزالة عناصر متعددة تلبي المعايير من خلال محسّنة للحلقة
2. قم بإزالة عنصر يفي بالمعايير من خلال محسّن للحلقة
3. حذف عناصر متعددة تلبي الظروف من خلال العادية للحذف
4. التكرار لاجتياز وحذف عناصر متعددة تلبي الظروف
/ *** استخدم محسّنًا للحلقة* بعد حذف العناصر من القائمة أثناء الحلقة ، سيتم الإبلاغ عن concurrentModificationException عند الاستمرار في قائمة الحلقة*/ public void listremove () {list <Tudent> students = this.getStudents () ؛ لـ (الطالب Stu: الطلاب) {if (stu.getId () == 2) students.remove (stu) ؛ }} / *** استخدم محسّنًا لـ Loop لتجاوز القائمة وحذفه ، ولكن لن يظهر أي استثناء إذا ظهر مباشرة بعد الحذف*/ public void listremovebreak () {list <student> students = this.getStudents () ؛ لـ (الطالب Stu: الطلاب) {if (stu.getId () == 2) {students.remove (stu) ؛ استراحة؛ }}} /** * قد يفوتك هذا النوع من التمرير عنصرًا ، لأنه بعد حذف العنصر ، يتغير حجم القائمة في * ، ويتغير فهرس العنصر أيضًا. على سبيل المثال ، عندما تقوم بحلق إلى العنصر الثاني ، يمكنك حذفه ، * بعد ذلك ، تقوم بزيارة العنصر الثالث ، وتصل بالفعل إلى العنصر الرابع الأصلي. عندما يتجاوز فهرس العنصر الذي تم الوصول إليه * حجم القائمة الحالية ، سيظهر استثناء من الحدود المتقاطعة الصفيف. بالطبع ، لن يظهر هذا الاستثناء هنا ، * لأنه في كل مرة تمر فيها ، يتم أخذ حجم القائمة الحالية مرة أخرى. */ public void listremove2 () {list <Tudent> students = this.getStudents () ؛ لـ (int i = 0 ؛ i <students.size () ؛ i ++) {if (students.get (i) .getID () ٪ 3 == 0) {student student.get.get (i) ؛ students.remove (طالب) ؛ }}} / *** يمكنك أيضًا حذف وتجارة عبر استخدام ITerator*/ public void iteratorremove () {list <Tudent> students = this.getStudents () ؛ System.out.println (الطلاب) ؛ iterator <Tudent> stuiter = students.iterator () ؛ بينما (stuiter.hasnext ()) {student student = stuiter.next () ؛ إذا (student.getID () ٪ 2 == 0) // ، يجب عليك استخدام طريقة إزالة التكرار لإزالة الكائن الحالي. إذا كنت تستخدم طريقة إزالة القائمة ، فسيظهر ConcurrentModificationException أيضًا stuiter.remove () ؛ } system.out.println (students) ؛ } استيراد java.util.arraylist ؛ استيراد java.util.iterator ؛ استيراد java.util.list ؛ الفئة العامة listremove {public static void main (string args []) {listremove lr = new listremove () ؛ lr.listremove () ؛ lr.listremovebreak () ؛ // lr.listremove2 () ؛ // lr.iteratorremove () ؛ } / *** استخدم محسّنًا للحلقة* بعد حذف العناصر من القائمة أثناء الحلقة ، سيتم الإبلاغ عن ConcurrentModificationException عند الاستمرار في قائمة الحلقة* / public void listremove () {list <Tudtude> students = this.getStudents () ؛ لـ (الطالب Stu: الطلاب) {if (stu.getId () == 2) students.remove (stu) ؛ }} / *** استخدم محسّنًا لـ Loop لتجاوز القائمة وحذفه ، ولكن لن يظهر أي استثناء بعد الحذف إذا ظهر على الفور* / public void listremovebreak () {list <Tudent> students = this.getStudents () ؛ لـ (الطالب Stu: الطلاب) {if (stu.getId () == 2) {students.remove (stu) ؛ استراحة؛ }}}} /*** لا يستخدم هذا النوع من المواقف محسّنًا للحلقة ، ولن يتم الإبلاغ عن اجتياز حجم القائمة عند التشغيل ، ولكن قد تكون نتيجة الحذف خاطئة. */ public void listremove2 () {list <Tudent> students = this.getStudents () ؛ لـ (int i = 0 ؛ i <students.size () ؛ i ++) {if (students.get (i) .getID () ٪ 2 == 0) students.remove (i) ؛ }} / *** يمكنك أيضًا حذف وتجارة بنجاح باستخدام ITerator* / public void iteratorremove () {list <studture> students = this.getStudents () ؛ System.out.println (الطلاب) ؛ iterator <Tudent> stuiter = students.iterator () ؛ بينما (stuiter.hasnext ()) {student student = stuiter.next () ؛ if (student.getID () ٪ 2 == 0) stuiter.remove () ؛ } system.out.println (students) ؛ } القائمة الخاصة <Tudture> getStudents () {List <Tudent> students = new ArrayList <Tudent> () {{int i = 0 ؛ بينما (i ++ <10) {student student = new student (i ، "201200" + i ، "name_" + i) ؛ this.add (طالب) ؛ }}} ؛ إرجاع الطلاب ؛ }} طالب الطبقة العامة {private int id ؛ سلسلة خاصة. اسم السلسلة الخاصة ؛ الطالب العام () {} الطالب العام (int id ، String und ، اسم السلسلة) {this.id = id ؛ this.stuno = stuno ؛ this.name = name ؛ } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } سلسلة عامة getStuno () {return und ؛ } public void setStuno (String und) {this.stuno = und ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } Override public string toString () {return "student [id =" + id + "، name =" + name + "، stuno =" + stuno + "]" ؛ }}المقالة أعلاه تعبر عناصر وحذفها بشكل صحيح في القائمة (الموصى بها) هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.