本帖最后由 长沙-小知姐姐 于 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对其赋值
|