Existem muitas maneiras de atravessar e excluir elementos na lista, e os problemas surgirão quando usados incorretamente. Vamos dar uma olhada nas seguintes formas de exclusão de travessia de elementos na lista:
1. Remova vários elementos que atendem aos critérios por meio de um loop aprimorado para
2. Remova um elemento que atenda aos critérios através de um loop aprimorado
3. Exclua vários elementos que atendem às condições por meio de exclusão ordinária para exclusão
4. Iterador para atravessar e excluir vários elementos que atendem às condições
/ *** Use aprimorada para loop* Após a exclusão de elementos da lista durante o loop, o ConcurrentModificationException será relatado ao continuar a fazer loop list*/ public void listroMove () {list <estudante> alunos = this.getStudents (); para (Student Stu: Students) {if (stu.getId () == 2) alunos.remove (stu); }} / *** Use uma lista aprimorada para o loop para atravessar e excluir a lista, mas nenhuma exceção aparecerá se ele aparecer imediatamente após a exclusão*/ public void listremovebreak () {list <estudante> alunos = this.getStudents (); for (Student Stu: Students) {if (Stu.getId () == 2) {Student.Remove (STU); quebrar; }}} /** * Esse tipo de travessia pode perder um elemento, porque depois de excluir o elemento, o tamanho da lista muda em * e o índice do elemento também está mudando. Por exemplo, quando você lota para o segundo elemento, você o exclui, * Em seguida, visita o terceiro elemento e, na verdade, acessa o quarto elemento original. Quando o índice do elemento acessado * excede o tamanho da lista atual, uma exceção da fronteira transfronteira aparecerá. Obviamente, essa exceção não aparecerá aqui, * porque toda vez que você passa por ela, o tamanho da lista atual é tirado novamente. */ public void listremove2 () {list <estudante> alunos = this.getStudents (); para (int i = 0; i <estudantes.size (); i ++) {if (estudantes.get (i) .getId ()%3 == 0) {Student Student = estudante.get (i); estudantes.remove (estudante); }}} / *** Você também pode excluir e atravessar com êxito usando o iterador*/ public void iteratorreMove () {list <estudante> alunos = this.getStudents (); System.out.println (alunos); Iterator <very Student> stuiter = estudantes.iterator (); while (stuiter.hasNext ()) {Student Student = stuiter.Next (); if (Student.getId () % 2 == 0) // Aqui você precisa usar o método Remover do iterador para remover o objeto atual. Se você usar o método de remoção de lista, o ConcurrentModificationException também aparecerá stuiter.remove (); } System.out.println (alunos); } importar java.util.arraylist; importar java.util.iterator; importar java.util.list; public class Listremove {public static void main (string args []) {listremove lr = new Listremove (); lr.listremove (); lr.listremovebreak (); // lr.listremove2 (); // lr.iteratorreMove (); } / *** Use aprimorada para loop* Após a exclusão de elementos da lista durante o loop, será relatada uma concorrente de UMModificação ao continuar a seguir a lista* / public void listroMove () {list <estudante> alunos = this.getStudents (); para (Student Stu: Students) {if (stu.getId () == 2) alunos.remove (stu); }} / *** Use um loop aprimorado para atravessar e excluir a lista, mas nenhuma exceção aparecerá após a exclusão se ele aparecer imediatamente* / public void listremovebreak () {list <estudante> alunos = this.getStudents (); for (Student Stu: Students) {if (Stu.getId () == 2) {Student.Remove (STU); quebrar; }}}} /*** Esse tipo de situação não usa um loop aprimorado para o loop, e a travessia de tamanho da lista não será relatada ao executar, mas o resultado do exclusão pode estar errado. */ public void listremove2 () {list <estudante> alunos = this.getStudents (); for (int i = 0; i <estudantes.size (); i ++) {if (estudantes.get (i) .getId ()%2 == 0) alunos.remove (i); }} / *** Você também pode excluir e atravessar com sucesso usando o iterador* / public void iteratorreRemove () {list <estudante> alunos = this.getStudents (); System.out.println (alunos); Iterator <very Student> stuiter = estudantes.iterator (); while (stuiter.hasNext ()) {Student Student = stuiter.Next (); if (student.getId () % 2 == 0) stuiter.remove (); } System.out.println (alunos); } Lista privada <very Student> getStudents () {list <estudante> alunos = new ArrayList <vertudy> () {{int i = 0; while (i ++ <10) {estudante = novo aluno (i, "201200" + i, "name_" + i); this.add (aluno); }}}; devolver alunos; }} Public Class Student {private Int ID; String privado atordoo; nome de string privado; public student () {} public student (int id, string atuno, string name) {this.id = id; this.stuno = atordoo; this.name = nome; } public int getId () {return id; } public void setId (int id) {this.id = id; } public string getStuno () {return atuno; } public void setStuno (string atuno) {this.stuno = stuno; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } @Override public string tostring () {return "Student [id =" + id + ", name =" + name + ", stuno =" + atordoo + "]"; }}O artigo acima atravessando e excluindo corretamente os elementos na lista (recomendados) é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.