public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
list.forEach(item -> {
if (item == 3) {
list.remove(3);
}
});
}
使用foreach删除集合元素的时候,有可能会报错,报错信息如下:
这是因为在使用foreach循环时,Java会使用迭代器来遍历集合中的元素,而在集合被修改时,迭代器可能会失效,从而导致ConcurrentModificationException异常的抛出。
为了避免这个问题,可以使用Iterator的remove()方法来删除元素,这样可以避免ConcurrentModificationException异常的出现。代码如下:
public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer next = iterator.next();
if (next == 3) {
iterator.remove();
}
}
}
以上代码还有一个简单的写法,使用removeIf
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
list.removeIf(item -> item == 3);