首页 > 编程知识 正文

hashmap遍历方式(Arraylist遍历)

时间:2023-05-04 20:25:28 阅读:64973 作者:4450

遍历ArrayList有for循环、foreach、迭代器iterator、listIterator,在foreach中遍历的同时修改ArrayList将抛出3358www.Sina.com/异常。 a博客和b博客分析了这个问题。

a博客中的这句话(上图)是arraylist2调用remove方法(ConcurrentModificationException)删除元素后增加一个modCount变量,但http://www.Sina.com (对应于代码屏幕截图的红框1;因此,在foreach底部通过next方法遍历时,modCount和expectedModCount不相等,checkForComodification ) ) )红框2、4 )。

如果ArrayList显式调用iterator ()方法以生成相应的迭代器iterator,则可以在remove方法中删除迭代器的remove方法中刚访问的元素(如下图所示) ArrayList类的私有迭代器类Itr没有实现add方法,因此无法在迭代器中添加元素。 这里也表明,只要我们在ArrayList类的方法中操作并修改了modCount,但没有更新expectedModCount,就会报告错误。 但是,修改Itr类expectedModCount的地方有两个,大家只要一直盯着这两个地方就可以了。

listIterator迭代器都可以去看源代码。 listIterator类确保modCount和expectedModCount相等,不不均等。 在列表迭代器中添加和删除元素是安全的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。