มีหลายวิธีในการสำรวจและลบองค์ประกอบในรายการและปัญหาจะเกิดขึ้นเมื่อใช้อย่างไม่เหมาะสม ลองมาดูรูปแบบการลบองค์ประกอบการสำรวจในรายการ:
1. ลบองค์ประกอบหลายอย่างที่ตรงตามเกณฑ์ผ่านการปรับปรุงสำหรับลูป
2. ลบองค์ประกอบที่ตรงตามเกณฑ์ผ่านการปรับปรุงสำหรับลูป
3. ลบองค์ประกอบหลายอย่างที่ตรงตามเงื่อนไขผ่านสามัญเพื่อลบ
4. ตัววนซ้ำเพื่อสำรวจและลบองค์ประกอบหลายอย่างที่ตรงตามเงื่อนไข
/ *** ใช้การปรับปรุงสำหรับลูป* หลังจากลบองค์ประกอบออกจากรายการระหว่างลูปพร้อมกันจะมีการรายงานการรับรู้พร้อมกันเมื่อดำเนินการต่อไปยังรายการลูป*/ โมฆะสาธารณะ listremove () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (นักเรียน Stu: นักเรียน) {ถ้า (stu.getId () == 2) นักเรียน REMOVE (Stu); - / *** ใช้การปรับปรุงสำหรับการวนซ้ำเพื่อสำรวจและลบรายการ แต่จะไม่มีข้อยกเว้นจะปรากฏขึ้นหากปรากฏขึ้นทันทีหลังจากลบ*/ โมฆะสาธารณะ listremovebreak () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (นักเรียน Stu: นักเรียน) {ถ้า (stu.getId () == 2) {students.remove (stu); หยุดพัก; - /** * การเดินทางแบบนี้อาจพลาดองค์ประกอบเนื่องจากหลังจากลบองค์ประกอบขนาดของรายการจะเปลี่ยนแปลงใน * และดัชนีขององค์ประกอบก็เปลี่ยนไปเช่นกัน ตัวอย่างเช่นเมื่อคุณวนซ้ำไปยังองค์ประกอบที่สองคุณจะลบมัน * ถัดไปคุณไปที่องค์ประกอบที่สามและคุณเข้าถึงองค์ประกอบที่สี่ดั้งเดิม เมื่อดัชนีองค์ประกอบที่เข้าถึงได้เกินขนาดของรายการปัจจุบันข้อยกเว้นของอาร์เรย์ข้ามพรมแดนจะปรากฏขึ้น แน่นอนว่าข้อยกเว้นนี้จะไม่ปรากฏที่นี่ * เพราะทุกครั้งที่คุณผ่านมันขนาดของรายการปัจจุบันจะถูกนำมาอีกครั้ง */ โมฆะสาธารณะ listremove2 () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (int i = 0; i <students.size (); i ++) {ถ้า (students.get (i) .getId ()%3 == 0) {นักเรียน = นักเรียน = นักเรียน. get (i); นักเรียนลบ (นักเรียน); - / *** คุณสามารถลบและสำรวจการสำรวจได้สำเร็จโดยใช้ iterator*/ โมฆะสาธารณะ iteratorRemove () {รายการ <student> นักเรียน = this.getStudents (); System.out.println (นักเรียน); ตัววนซ้ำ <student> stuiter = students.iterator (); ในขณะที่ (stuiter.hasnext ()) {นักเรียนนักเรียน = stuiter.next (); ถ้า (student.getId () % 2 == 0) // ที่นี่คุณต้องใช้วิธีการลบของตัววนซ้ำเพื่อลบวัตถุปัจจุบัน หากคุณใช้วิธีการลบรายการรายการพร้อมกัน Exception จะปรากฏ stuiter.remove (); } system.out.println (นักเรียน); - นำเข้า java.util.arraylist; นำเข้า java.util.iterator; นำเข้า java.util.list; คลาสสาธารณะ listremove {โมฆะคงที่สาธารณะหลัก (สตริง args []) {listremove lr = ใหม่ listremove (); lr.listremove (); lr.listremovebreak (); // lr.listremove2 (); // lr.iteratorremove (); } / *** ใช้การปรับปรุงสำหรับลูป* หลังจากลบองค์ประกอบออกจากรายการระหว่างลูปจะมีการรายงานการรับรู้ร่วมกันพร้อมกันเมื่อดำเนินการต่อไปในรายการลูป* / โมฆะสาธารณะ listremove () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (นักเรียน Stu: นักเรียน) {ถ้า (stu.getId () == 2) นักเรียน REMOVE (Stu); }} / *** ใช้รายการที่ปรับปรุงสำหรับการวนซ้ำเพื่อสำรวจและลบรายการ แต่จะไม่มีข้อยกเว้นจะปรากฏขึ้นหลังจากการลบหากมันปรากฏขึ้นทันที* / โมฆะสาธารณะ listremovebreak () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (นักเรียน Stu: นักเรียน) {ถ้า (stu.getId () == 2) {students.remove (stu); หยุดพัก; }}}} /*** สถานการณ์ประเภทนี้ไม่ได้ใช้การปรับปรุงสำหรับลูปและขนาดการเดินทางข้ามของรายการจะไม่ถูกรายงานเมื่อทำงาน แต่ผลลัพธ์ของการลบอาจผิด */ โมฆะสาธารณะ listremove2 () {รายการ <student> นักเรียน = this.getStudents (); สำหรับ (int i = 0; i <students.size (); i ++) {ถ้า (students.get (i) .getId ()%2 == 0) นักเรียน remove (i); }} / *** คุณสามารถลบและข้ามได้สำเร็จโดยใช้ iterator* / โมฆะสาธารณะ iteratorRemove () {รายการ <student> นักเรียน = this.getStudents (); System.out.println (นักเรียน); ตัววนซ้ำ <student> stuiter = students.iterator (); ในขณะที่ (stuiter.hasnext ()) {นักเรียนนักเรียน = stuiter.next (); if (student.getId () % 2 == 0) stuiter.remove (); } system.out.println (นักเรียน); } รายการส่วนตัว <Tudent> getStudents () {รายการ <student> นักเรียน = ใหม่ ArrayList <Tudent> () {{int i = 0; ในขณะที่ (i ++ <10) {นักเรียนนักเรียน = นักเรียนใหม่ (i, "201200" + i, "name_" + i); this.add (นักเรียน); - กลับมานักเรียน - นักศึกษาชั้นเรียนสาธารณะ {ID INT ส่วนตัว; สตริงส่วนตัว Stuno; ชื่อสตริงส่วนตัว; นักเรียนสาธารณะ () {} นักเรียนสาธารณะ (ID int, String Stuno, ชื่อสตริง) {this.id = id; this.stuno = stuno; this.name = ชื่อ; } สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getStuno () {return smuno; } โมฆะสาธารณะ setStuno (String stuno) {this.stuno = stuno; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } @Override สตริงสาธารณะ toString () {return "นักเรียน [id =" + id + ", name =" + name + ", stuno =" + stuno + "]"; -บทความข้างต้นสำรวจและลบองค์ประกอบอย่างถูกต้องในรายการ (แนะนำ) เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น