源码
List<String> list = new ArrayList<>();
list.add("wupx");
list.add("love");
list.add("huxy");
for (String temp : list) {
if ("love".equals(temp)) {
list.remove(temp);
}
}
删除会报错,出现ConcurrentModificationException 异常,出现原因应该是在循环中size变小而无法遍历。详细的可以去了解源码。
解决方法
List<String> list = new ArrayList<>();
list.add("wupx");
list.add("love");
list.add("huxy");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals("wupx")) {
iterator.remove();
}
}
第二种方法
for (int i = 0; i < list.size(); i++) {
if("xxx".equals(list.get(i))){
list.remove(i);
i--;
}
}
第三种方法
for (int i = list.size() - 1; i > 0; i--) {
if("xxx".equals(list.get(i))){
list.remove(i);
}
}