ArrayList

ArrayList结构

这里写图片描述
这里写图片描述

SubList是一个内部类,同样继承了AbstractList
sublist由外部类支持,所有非结构性的操作,返回是相同的,结构性的操作即改变大小的操作将会导致不确定。比如Array List的remove操作,会改变size属性和modCount属性,SubList的remove操作会调用ArrayList的remove操作,并用ArrayList的modCount给本身的modCount赋值,但ArrayList并不会主动操作sublist的属性,如果在有了sublist实例之后操作了ArrayList的大小,会导致sublist的modCount属性和ArrayList的modCount不一致,则sublist实例会不可用,因为他们都是fast-fail的。

迭代器Itr继承自Iterator,有
int cursor; // index of next element to return
int lastRet = -1; // index of last element returned; -1 if no such
int expectedModCount = modCount;
可以看出迭代器也是快速失败的。
cursor初始为零,next()返回的就cursor当前指的值,然后会使cursor+1;所以cursor会返回下一个元素的索引。lastRet总是比cursor小1,next()函数中返回的其实是elementData[lastRet=i=cursor].

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章