前言

相比于C++容器遍历删除元素(链接),Java语言遍历删除集合元素在写法上略有差异。

正文

对于Java语言,推荐使用迭代器的删除方法在遍历的过程中删除元素,以List为例示例如下:

  1. List<Student> list = new ArrayList<>();
  2. list.add(new Student("male"));
  3. list.add(new Student("female"));
  4. list.add(new Student("female"));
  5. list.add(new Student("male"));
  6. //遍历删除,除去男生
  7. Iterator<Student> iterator = list.iterator();
  8. while (iterator.hasNext()) {
  9. Student student = iterator.next();
  10. if ("male".equals(student.getGender())) {
  11. iterator.remove();//使用迭代器的删除方法删除
  12. }
  13. }

注意,不能将上述例子中的iterator.remove(); 改为list.remove(student); 这将导致ConcurrentModificationException异常。
在Java8之后,推荐使用removeIf进行删除。

参考链接

java中List遍历删除元素