Il existe de nombreuses façons de traverser et de supprimer des éléments dans la liste, et des problèmes surviendront lorsqu'ils seront utilisés à tort. Jetons un coup d'œil aux formes suivantes de suppression de traversée d'éléments dans la liste:
1. Retirez plusieurs éléments qui répondent aux critères grâce à une boucle améliorée
2. Retirez un élément qui répond aux critères à travers une boucle améliorée
3. Supprimer plusieurs éléments qui remplissent les conditions par le biais de la suppression ordinaire
4. Iterator pour traverser et supprimer plusieurs éléments qui remplissent les conditions
/ ** * Utiliser amélioré pour la boucle * Après la suppression des éléments de la liste pendant la boucle, ConcurrentModificationException sera signalée lors de la poursuite de la liste de boucle * / public void listreMove () {list <Student> Students = this.getStudents (); pour (étudiant Stu: étudiants) {if (stu.getId () == 2) Students.Remove (Stu); }} / ** * Utilisez une liste améliorée pour la boucle pour traverser et supprimer la liste, mais aucune exception n'apparaîtra si elle apparaît immédiatement après la suppression * / public void listreMovebreak () {list <Student> Students = this.getStudents (); pour (Student Stu: Students) {if (stu.getId () == 2) {Students.Remove (Stu); casser; }}} / ** * Ce type de traversée peut manquer un élément, car après la suppression de l'élément, la taille de la liste change * et l'index de l'élément change également. Par exemple, lorsque vous bouclez vers le deuxième élément, vous le supprimez, * Ensuite, vous visitez le troisième élément, et en fait, vous accédez au quatrième élément d'origine. Lorsque l'élément accessible * L'indice dépasse la taille de la liste actuelle, une exception du tableau transfrontalier apparaîtra. Bien sûr, cette exception n'apparaîtra pas ici, * parce que chaque fois que vous la traversez, la taille de la liste actuelle est à nouveau prise. * / public void listreMove2 () {list <Student> Students = this.getStudents (); for (int i = 0; i <saturades.size (); i ++) {if (students.get (i) .getId ()% 3 == 0) {étudiant étudiant = students.get (i); Students.Remove (étudiant); }}} / ** * Vous pouvez également supprimer et traverser avec succès en utilisant Iterator * / public void iteratorreMove () {list <Student> étudiants = this.getStudents (); System.out.println (étudiants); Iterator <Student> Stumer = Students.Iterator (); while (stututer.hasnext ()) {étudiant étudiant = stututer.next (); if (Student.getId ()% 2 == 0) // Ici, vous devez utiliser la méthode de suppression de l'itérateur pour supprimer l'objet actuel. Si vous utilisez la méthode de suppression de la liste, ConcurrentModificationException apparaîtra également sttuer.reMove (); } System.out.println (étudiants); } 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 (); } / ** * Utiliser amélioré pour la boucle * Après la suppression des éléments de la liste pendant la boucle, une conception concurrentModificationException sera signalée lors de la poursuite de la liste des boucles * / public void listreMove () {list <étudiant> étudiants = this.getStudents (); pour (étudiant Stu: étudiants) {if (stu.getId () == 2) Students.Remove (Stu); }} / ** * Utilisez une liste améliorée pour la boucle pour traverser et supprimer la liste, mais aucune exception n'apparaîtra après la suppression si elle apparaît immédiatement * / public void listreMovebreak () {list <Student> Students = this.getStudents (); pour (Student Stu: Students) {if (stu.getId () == 2) {Students.Remove (Stu); casser; }}}} / ** * Ce type de situation n'utilise pas une boucle améliorée, et la traversée de taille de la liste ne sera pas signalée lors de l'exécution, mais le résultat de la suppression peut être faux. * / public void listreMove2 () {list <Student> Students = this.getStudents (); for (int i = 0; i <saturades.size (); i ++) {if (students.get (i) .getId ()% 2 == 0) Students.Remove (i); }} / ** * Vous pouvez également supprimer et traverser avec succès en utilisant Iterator * / public void iteratorreMove () {list <Student> Students = this.getStudents (); System.out.println (étudiants); Iterator <Student> Stumer = Students.Iterator (); while (stututer.hasnext ()) {étudiant étudiant = stututer.next (); if (Student.getId ()% 2 == 0) sttuer.reMove (); } System.out.println (étudiants); } List privé <Student> GetStudents () {list <Student> Students = new ArrayList <Student> () {{int i = 0; while (i ++ <10) {étudiant étudiant = nouveau étudiant (i, "201200" + i, "name_" + i); this.add (étudiant); }}}; les étudiants de retour; }} Étudiant de classe publique {private int id; étourdissement de cordes privées; nom de chaîne privé; Student public () {} public Student (int id, String Stuno, String Name) {this.id = id; this.stuno = étourdissement; 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 = stuneco; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } @Override public String toString () {return "Student [id =" + id + ", name =" + name + ", étalo =" + étalo + "]"; }}L'article ci-dessus traversant et supprimant correctement les éléments dans la liste (recommandés) est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.