A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 长沙-小知姐姐 黑马粉丝团   /  2018-12-28 15:38  /  955 人查看  /  0 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 长沙-小知姐姐 于 2019-1-3 09:28 编辑





ArrayList添加元素和迭代元素代码
代码:
屏幕快照 2018-12-28 下午3.36.01.png

结果:

传智黑马 酷丁鱼 传智专修学院

很显然,由于ArrayList是一个有序的集合,因此在迭代的时候保证了元素的存取顺序。那么,迭代器到底是怎么工作的呢?

迭代器源码:
屏幕快照 2018-12-28 下午3.36.32.png
屏幕快照 2018-12-28 下午3.37.28.png

图解:
屏幕快照 2018-12-28 下午3.38.01.png

总结;
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对其赋值



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马