Ada banyak cara untuk melintasi dan menghapus elemen dalam daftar, dan masalah akan muncul ketika digunakan secara tidak benar. Mari kita lihat bentuk penghapusan elemen traversal berikut dalam daftar:
1. Hapus beberapa elemen yang memenuhi kriteria melalui peningkatan untuk loop
2. Lepaskan elemen yang memenuhi kriteria melalui peningkatan untuk loop
3. Hapus banyak elemen yang memenuhi kondisi melalui penghapusan biasa
4. Iterator untuk melintasi dan menghapus banyak elemen yang memenuhi syarat
/ *** Gunakan Enhanced for Loop* Setelah menghapus elemen dari daftar selama loop, ConcurrentModificationException akan dilaporkan saat melanjutkan ke daftar loop*/ public void listremove () {List <shongent> Siswa = this.getstudents (); untuk (siswa Stu: Siswa) {if (stu.getId () == 2) Siswa.remove (Stu); }} / *** Gunakan daftar yang disempurnakan untuk melintasi dan menghapus daftar, tetapi tidak ada pengecualian akan muncul jika itu muncul segera setelah penghapusan*/ public void listremoveBreak () {list <shuent> student = this.getstudents (); untuk (siswa Stu: siswa) {if (stu.getId () == 2) {student.remove (Stu); merusak; }}} /** * Traversal semacam ini dapat kehilangan elemen, karena setelah menghapus elemen, ukuran daftar perubahan dalam *, dan indeks elemen juga berubah. Misalnya, ketika Anda mengulang ke elemen kedua, Anda menghapusnya, * Selanjutnya, Anda mengunjungi elemen ketiga, dan sebenarnya Anda mengakses elemen keempat asli. Ketika indeks elemen * yang diakses melebihi ukuran daftar saat ini, pengecualian dari array lintas batas akan muncul. Tentu saja, pengecualian ini tidak akan muncul di sini, * karena setiap kali Anda melewatinya, ukuran daftar saat ini diambil lagi. */ public void listreMove2 () {list <shuents> student = this.getstudents (); untuk (int i = 0; i <student.size (); i ++) {if (student.get (i) .getId ()%3 == 0) {student student = student.get (i); Siswa.Remove (Siswa); }}} / *** Anda juga dapat berhasil menghapus dan melintasi dengan menggunakan iterator*/ public void iterATorremove () {List <shuents> student = this.getstudents (); System.out.println (Siswa); Iterator <shonish> Stuiter = student.iterator (); while (STUITER.HASNEXT ()) {Student Student = STUITER.NEXT (); if (student.getId () % 2 == 0) // Di sini Anda perlu menggunakan metode hapus iterator untuk menghapus objek saat ini. Jika Anda menggunakan metode Hapus Daftar, ConcurrentModificationException juga akan muncul STUITER.REMOVE (); } System.out.println (Siswa); } impor java.util.arraylist; import java.util.iterator; impor java.util.list; kelas publik Listremove {public static void main (string args []) {listremove lr = new listremove (); lr.listremove (); lr.listremoveBreak (); // lr.listremove2 (); // lr.iteraturremove (); } / *** Gunakan ditingkatkan untuk loop* Setelah menghapus elemen dari daftar selama loop, concurrentModificationException akan dilaporkan saat melanjutkan ke daftar loop* / public void listremove () {list <sisisent> student = this.getstudents (); untuk (siswa Stu: Siswa) {if (stu.getId () == 2) Siswa.remove (Stu); }} / *** Gunakan daftar yang disempurnakan untuk melintasi dan menghapus daftar, tetapi tidak ada pengecualian yang akan muncul setelah dihapus jika muncul segera* / public void listremeBreak () {list <shuents> student = this.getstudents (); untuk (siswa Stu: siswa) {if (stu.getId () == 2) {student.remove (Stu); merusak; }}}} /*** Situasi semacam ini tidak menggunakan peningkatan untuk loop, dan ukuran traversal dari daftar tidak akan dilaporkan saat berjalan, tetapi hasil penghapusan mungkin salah. */ public void listreMove2 () {list <shuents> student = this.getstudents (); untuk (int i = 0; i <student.size (); i ++) {if (student.get (i) .getId ()%2 == 0) siswa. }} / *** Anda juga dapat menghapus dan melintasi dengan sukses dengan menggunakan iterator* / public void iteratorremove () {List <shuents> student = this.getstudents (); System.out.println (Siswa); Iterator <shonish> Stuiter = student.iterator (); while (STUITER.HASNEXT ()) {Student Student = STUITER.NEXT (); if (student.getId () % 2 == 0) STUITER.REMOVE (); } System.out.println (Siswa); } Daftar Pribadi <Sahasiswa> getStudents () {Daftar <Sahwarah> Siswa = ArrayList baru <shenander> () {{int i = 0; while (i ++ <10) {Siswa Siswa = Siswa Baru (i, "201200" + i, "Name_" + i); this.add (siswa); }}}; siswa kembali; }} siswa kelas publik {private int id; Stuno string pribadi; nama string pribadi; Public Student () {} Public Student (int ID, String Stuno, String Name) {this.id = id; this.stuno = stuno; this.name = name; } public int getId () {return id; } public void setid (int id) {this.id = id; } public String getStuno () {return stuno; } public void setstuno (String stuno) {this.stuno = stuno; } public string getName () {return name; } public void setName (name string) {this.name = name; } @Override Public String ToString () {return "Student [id =" + id + ", name =" + name + ", stuno =" + stuno + "]"; }}Artikel di atas dengan benar melintasi dan menghapus elemen dalam daftar (disarankan) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.