A menudo queremos eliminar ciertos elementos de una colección. Algunos pueden escribir esto.
Copie el código de código de la siguiente manera:
operación de vacío público (lista de lista) {
para (Iterador it = lista.iterator(); it.hasNext();) {
Cadena cadena = (Cadena)it.next();
si (str.equals("chengang")){
lista.remove(str);
}
}
}
Tan pronto como se ejecute este método de escritura, se informará la siguiente excepción:
Excepción en el hilo "principal" java.util.ConcurrentModificationException
en java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
Porque los elementos de la lista no se pueden eliminar mientras está en el bucle. Más tarde hice esto, un método muy estúpido. La idea es la siguiente: crear una lista para almacenar específicamente los elementos que se eliminarán. Después del ciclo, use el método List.removeAll para eliminar los elementos. El código es el siguiente:
Copie el código de código de la siguiente manera:
operación de vacío público (lista de lista) {
Lista removeList= nueva ArrayList();
for (Iterador it = lista.iterator(); it.hasNext();) {
Cadena cadena = (Cadena)it.next();
si (str.equals("chengang")){
eliminarList.add(str);
}
}
lista.removeAll(eliminarLista);
}
De hecho, esto puede resolver el problema, pero el método es demasiado engorroso. De hecho, puede haber un método más simple y eficiente, que es utilizar el método Iterator.remove, de la siguiente manera:
Copie el código de código de la siguiente manera:
for (Iterador it = lista.iterator(); it.hasNext();) {
Cadena cadena = (Cadena)it.next();
si (str.equals("chengang")){
es.remove();
}
}
Entonces, cuanto más conozcas los conceptos básicos de Java, más sencillo será tu código. Por el contrario, si su código es particularmente complejo, debe haber algún problema con el método o diseño.