概述
这个是个坑让我一个很简单的笔试题竟然20分钟写不出来的原因之一
我们都知道如果是像List集合这样的,如果用循环遍历,访问没问题,在这期间如果删除就会报错,这个问题是因为你改变了集合的长度,但是遍历用的原来的长度的原因,
所以Iterator优秀点就出现了,它的出现让你可以在遍历时删除你想删除的元素,它用while循环遍历,它往下循环也就是while里的判定条件是Iterator.hasNext()
返回的是boolean类型,看这个也明白,它是在你想继续往下遍历时先查询是否存在下一个元素。
而且集合转Iterator也不麻烦,集合本身就有这个方法
Iterator<泛型> it = 集合.iterator();
敲黑板
下面要讲两点重要的还容易忘的误区
- 如果在遍历时删除元素不要用集合的 remove() 方法,要用迭代器的 iterator.remove()
方法,虽然没有参数,但是它移除的是当前的。 - 在用迭代器迭代的时候千万不要修改集合和给集合添加元素,这样会报错,因为你迭代时添加元素会破坏迭代器的结构,所以会报错,因为拿ArrayList为例,在遍历到中间的时候,你往集合头部插入元素,集合的结构肯定变吧,那迭代器的数据结构也会跟着变,它就会主动报错,,但是删除就没问题了,因为你用的是迭代器的删除方法,而迭代器没有添加元素的方法
最后
以上就是美丽哑铃为你收集整理的迭代器Iterator在遍历时能remove但是不能往集合里添加元素问题的全部内容,希望文章能够帮你解决迭代器Iterator在遍历时能remove但是不能往集合里添加元素问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复