注意在使用ArrayList进行for循环遍历的时候不能直接移除下标,arraylist下标
分享于 点击 13327 次 点评:114
注意在使用ArrayList进行for循环遍历的时候不能直接移除下标,arraylist下标
public static void main(String[] args) {
List<String> strings = new ArrayList<>();
for (int i = 0; i < 10; i++) {
strings.add("1");
}
for (String s : strings) {
strings.remove(s);
//此处是错的
}
}
异常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
其实之前也遇到过,解决方法就是使用CopyOnWriteArrayList来遍历移除。
这次又给坑了,记下来,事不过三!
public static void main(String[] args) {
List<String> strings = new CopyOnWriteArrayList<>();
for (int i = 0; i < 10; i++) {
strings.add("1");
}
for (String s : strings) {
strings.remove(s);
}
System.out.println(strings.size());
}
// 0
相关文章
- 暂无相关文章
用户点评