报错:
解决办法:
先在for循环里面使用收集需要删除的元素,然后在集合外统一删
拓展:
为什么?
这是由于增强for循环底层调用的是迭代器的next和hasnext方法来遍历的,移除元素后,无法预知到元素的位置。这也是增强for的缺点,不能获取下标,不能动态删除集合中的内容。
那么用普通for循环取下标行不行?
不会报错了但是会发现没有删干净,原因是因为 这样会导致删除后索引改变,实际上少遍历了元素。
解决代码图:
先在for循环里面使用收集需要删除的元素,然后在集合外统一删
为什么?
这是由于增强for循环底层调用的是迭代器的next和hasnext方法来遍历的,移除元素后,无法预知到元素的位置。这也是增强for的缺点,不能获取下标,不能动态删除集合中的内容。
那么用普通for循环取下标行不行?
不会报错了但是会发现没有删干净,原因是因为 这样会导致删除后索引改变,实际上少遍历了元素。