我们开发过程中,经常会遇到一些业务模型,需要我们查询集合是否包含某个元素,然后对该集合进行一些增删操作。有时候,我们在遍历过程中会报ConcurrentModificationException
,有时候且不会,看似一切正常。这究竟是怎么回事呢?
情景复现
首先我们先创建一个集合,往里面加入a, b, c, d四个元素。现在就来模拟业务模型:如果集合中包含b,就往集合添加一个e。我们可以通过遍历集合来看集合是否包含b,是否需要添加元素。
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
下面是遍历集合的三种方法。
foreach遍历
for (String str : list) {
if ("b".equals(str)) {
list.add("e");
}
}
fori遍历
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if ("b".