遍历删除List中符合条件的元素主要有以下几种方法:
普通for循环
增强for循环 foreach
迭代器iterator
removeIf 和 方法引用 (一行代码搞定)
其中使用普通for循环容易造成遗漏元素的问题,增强for循环foreach会报java.util.ConcurrentModificationException并发修改异常。
所以推荐使用迭代器iterator,或者JDK1.8以上使用lambda表达式进行List的遍历删除元素操作。
以下是上述几种方法的具体分析:
1. 普通for循环
先看代码:
1 /** 2 * 普通for循环遍历删除元素 3 */ 4 List<Student> students = this.getStudents(); 5 for (int i=0; i<students.size(); i++) { 6 if (students.get(i).getId()%3 == 0) { 7 Student student = students.get(i); 8 students.remove(student); 9 } 10 }