Есть много способов пройти и удалять элементы в списке, и возникают проблемы при неправильном использовании. Давайте посмотрим на следующие формы удаления элементов в списке:
1. Удалите несколько элементов, которые соответствуют критериям через расширение для цикла
2. Удалите элемент, который соответствует критериям с помощью расширенного для цикла
3. Удалить несколько элементов, которые соответствуют условиям через обычные для удаления
4. Итератор для прохождения и удаления нескольких элементов, которые соответствуют условиям
/ *** Используйте Enhanced для цикла* После удаления элементов из списка во время цикла coundrentModificationException будет сообщено при продолжении цикла списка*/ public void listremove () {list <toold> = this.getStudents (); для (студент stu: студенты) {if (stu.getid () == 2) студенты.remove (stu); }} / *** Используйте расширенный для цикла для прохождения и удаления, но никаких исключений не появится, если он появится сразу после удаления*/ public void listremovebreak () {list <toolding> студенты = this.getStudents (); для (студент Stu: студенты) {if (stu.getId () == 2) {Student.Remove (stu); перерыв; }}} /** * Этот вид обхода может пропустить элемент, потому что после удаления элемента размер списка изменений в *, и индекс элемента также меняется. Например, когда вы переходите ко второму элементу, вы удаляете его, * Далее вы посещаете третий элемент, и на самом деле вы получаете доступ к исходному четвертому элементу. Когда доступный элемент * индекс превышает размер текущего списка, появится исключение поперечного графика массива. Конечно, это исключение не появится здесь, * потому что каждый раз, когда вы проходите через него, размер текущего списка воспринимается снова. */ public void listremove2 () {list <toodtless> студенты = this.getStudents (); for (int i = 0; i <studies.size (); i ++) {if (студенты.get (i) .getId ()%3 == 0) {студент студента = студенты.get (i); Студенты. РЕМОВА (Студент); }}} / *** Вы также можете успешно удалить и пройти, используя iterator*/ public void iteratorrremove () {list <toodt students = this.getStudents (); System.out.println (студенты); Iterator <tlpant> stuiter = Student.iterator (); while (stuiter.hasnext ()) {Student Student = stuiter.next (); if (student.getid () % 2 == 0) // Здесь вам нужно использовать метод удаления итератора для удаления текущего объекта. Если вы используете метод удаления списка, concurrentModificationException также появится Stuiter.remove (); } System.out.println (студенты); } Импорт 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.listremovebreab (); // lr.listremove2 (); // lr.iteratorrremove (); } / *** Используйте Enhanced для цикла* После удаления элементов из списка во время цикла a CondurentModificationException будет сообщено при продолжении цикла списка* / public void listremove () {list <toodts> utty.Tudy = this.getStudents (); для (студент stu: студенты) {if (stu.getid () == 2) студенты.remove (stu); }} / *** Используйте расширенный для цикла для прохождения и удаления, но после удаления не появится исключение, если он появится немедленно* / public void listremovebreable () {list <toold> Student = this.getStudents (); для (студент Stu: студенты) {if (stu.getId () == 2) {Student.Remove (stu); перерыв; }}}} /*** Эта ситуация не использует усиление для цикла, а обход списка размера не будет сообщено при запуске, но результат удаления может быть неправильным. */ public void listremove2 () {list <toodtless> студенты = this.getStudents (); for (int i = 0; i <studies.size (); i ++) {if (студенты. }} / **! System.out.println (студенты); Iterator <tlpant> stuiter = Student.iterator (); while (stuiter.hasnext ()) {Student Student = stuiter.next (); if (student.getid () % 2 == 0) stuiter.remove (); } System.out.println (студенты); } частный список <toodTude> getStudents () {list <Tdide> Student = new ArrayList <toodtle> () {{int i = 0; while (i ++ <10) {Студент = новый студент (i, "201200" + i, "name_" + i); this.add (студент); }}}; вернуть студентов; }} студент открытого класса {Private Int ID; частная строка Stuno; Приватное название строки; 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 (string name) {this.name = name; } @Override public String toString () {return "Student [id =" + id + ", name =" + name + ", stuno =" + stuno + "]"; }}Приведенная выше статья, правильно пересекающая и удаляющую элементы в списке (рекомендуется) - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.