原文:https://mp.weixin.qq.com/s/oeNGPy5Pac7wYd5t3hByjQ
个人总结:有意思,for 原理是Iterator实现,如果你只是删除List里面元素,会导致Iterator判断hasnext时数量不同而报错。这个是使用ArrayList.remove(Object xx)的方法。
正确是使用Iterator的remive()方法来删除,源码可以看出它删除元素同时对个数进行赋值。
正确删除方法:
for (Iterator<String> ite = list.iterator(); ite.hasNext();) {
String str = ite.next();
if (str.contains("b")) {
ite.remove();
}
}