黑马程序员技术交流社区
标题: 【长沙校区】ArrayList之迭代器源码解析 [打印本页]
作者: 长沙-小知姐姐 时间: 2018-12-28 15:38
标题: 【长沙校区】ArrayList之迭代器源码解析
本帖最后由 长沙-小知姐姐 于 2019-1-3 09:28 编辑
ArrayList添加元素和迭代元素代码
代码:
结果:
传智黑马 酷丁鱼 传智专修学院
很显然,由于ArrayList是一个有序的集合,因此在迭代的时候保证了元素的存取顺序。那么,迭代器到底是怎么工作的呢?
迭代器源码:
图解:
总结;
1,ArrayList迭代元素主要是取决于Itr该类的next()方法
2,很多同学都以为一开始光标指向-1,这其实是不对的,一开始一定是指向0索引的位置。因为cursor是属于Itr该类的成员变量,所以默认值为0
3,没吃调用next()方法的时候,在next方法中都有一个局部变量为 i,而i的值都来至于成员变量 cursor的赋值
4,当i的值大于或者等于集合的长度的时候报错,NoSuchElementException();没有原始异常
5,当i的值大于等于copy过来数组的长度的时候报错,ConcurrentModificationException();并发修改异常
6,每次取元素使用的关键代码 return (E) elementData[lastRet = i]; lastRet为Itr的成员变量,每次都是由成员变量i对其赋值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |