Hay muchas formas de atravesar y eliminar elementos en la lista, y surgirán problemas cuando se usan de manera incorrecta. Echemos un vistazo a las siguientes formas de eliminación transversal de elementos en la lista:
1. Eliminar múltiples elementos que cumplan con los criterios a través de un mejor
2. Retire un elemento que cumpla con los criterios a través de un mejor para el bucle
3. Eliminar múltiples elementos que cumplan con las condiciones a través de la eliminación ordinaria
4. Iterator para atravesar y eliminar múltiples elementos que cumplan con las condiciones
/ *** Use mejorado para bucle* Después de eliminar elementos de la lista durante el bucle, concurrentModificationException se informará cuando continúe con la lista de bucle*/ public void listremove () {list <deude> students = this.getStudents (); para (Student Stu: Students) {if (stu.getid () == 2) Students.remove (stu); }} / *** Use una lista mejorada de bucle para atravesar y eliminar, pero no aparecerá ninguna excepción si aparece inmediatamente después de la eliminación*/ public void listremovebreak () {list <deud> students = this.getStudents (); para (Student Stu: Students) {if (stu.getid () == 2) {Students.remove (stu); romper; }}} /** * Este tipo de transversal puede perder un elemento, porque después de eliminar el elemento, el tamaño de la lista cambia en * y el índice del elemento también está cambiando. Por ejemplo, cuando recorre el segundo elemento, lo elimina, * A continuación, visite el tercer elemento y, en realidad, accede al cuarto elemento original. Cuando el Índice de elemento accedido * excede el tamaño de la lista actual, aparecerá una excepción de la matriz transfronteriza. Por supuesto, esta excepción no aparecerá aquí, * porque cada vez que lo revise, el tamaño de la lista actual se toma nuevamente. */ public void listremove2 () {list <deuding> students = this.getStudents (); for (int i = 0; i <students.size (); i ++) {if (students.get (i) .getId ()%3 == 0) {Student Student = Students.get (i); Estudiantes. Remove (estudiante); }}} / *** También puede eliminar y atravesar con éxito usando iterator*/ public void iteratorremove () {list <deud> students = this.getStudents (); System.out.println (estudiantes); Iterador <deudante> stuiter = students.iterator (); while (stuiter.hasNext ()) {Student Student = stuiter.next (); if (student.getid () % 2 == 0) // Aquí debe usar el método de eliminación del iterador para eliminar el objeto actual. Si utiliza el método de eliminación de la lista, concurrentModificationException también aparecerá stuiter.remove (); } System.out.println (estudiantes); } import java.util.arrayList; import java.util.iterator; import java.util.list; public class listremove {public static void main (string args []) {listremove lr = new Listremove (); lr.listremove (); lr.listremoveBreak (); // lr.listremove2 (); // lr.iteratorremove (); } / *** Usar mejorado para bucle* Después de eliminar elementos de la lista durante el bucle, se informará una medición de modificación concurrente cuando continúe con la lista de bucle* / public void listremove () {list <diestriete> students = this.getStudents (); para (Student Stu: Students) {if (stu.getid () == 2) Students.remove (stu); }} / *** Use una lista mejorada de bucle para atravesar y eliminar, pero no aparecerá ninguna excepción después de la eliminación si aparece inmediatamente* / public void listremovebreak () {list <diesta> students = this.getStudents (); para (Student Stu: Students) {if (stu.getid () == 2) {Students.remove (stu); romper; }}}} /*** Este tipo de situación no usa un mejor para el bucle, y el tamaño de transferencia de la lista no se informará cuando se ejecute, pero el resultado de la eliminación puede ser incorrecto. */ public void listremove2 () {list <deuding> students = this.getStudents (); para (int i = 0; i <students.size (); i ++) {if (students.get (i) .getId ()%2 == 0) Students.remove (i); }} / *** También puede eliminar y atravesar con éxito utilizando iterator* / public void iteratorremove () {list <deude> students = this.getStudents (); System.out.println (estudiantes); Iterador <deudante> stuiter = students.iterator (); while (stuiter.hasNext ()) {Student Student = stuiter.next (); if (student.getid () % 2 == 0) stuiter.remove (); } System.out.println (estudiantes); } Lista privada <deudante> getStudents () {list <deuding> students = new ArrayList <estudiante> () {{int i = 0; while (i ++ <10) {Student Student = New Student (i, "201200" + i, "name_" + i); this.add (estudiante); }}}; estudiantes de regreso; }} Estudiante de clase pública {private int id; cadena privada stuno; nombre de cadena privada; Public Student () {} Public Student (int id, string stUNO, name de cadena) {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 () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } @Override public String toString () {return "student [id =" + id + ", name =" + name + ", stUNO =" + stuno + "]"; }}El artículo anterior atravesando y eliminando correctamente los elementos en la lista (recomendado) es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.