Java-List删除指定元素

在有些时候我们需要遍历List,并删除其中的指定元素。这时候我们可能会犯以下错误:

for (int i = 0; i < list.size(); i++) {
  if ("a".equals(list.get(i))) {
    list.remove(i);
  }
}

这样删除的问题在于,如果集合中有多个需要删除的元素,会发生并没有完全删除的问题。

如果使用增强for循环呢,如下:

for(String element : list){
  if ("a".equals(element)) {
    list.remove(element);
  }
}

em…也不行,会报错。

在遇到这种情况的时候,推荐使用迭代器来遍历删除。

代码如下:

Iterator<Student> iterator = list.iterator();
  while (iterator.hasNext()) {
    if ("a".equals(iterator.next())) {
      iterator.remove();
    }
}

或者使用removeIf:

list.removeIf(s -> s.equals("a"));

发表评论

电子邮件地址不会被公开。 必填项已用*标注