简单谈谈对ArrayList集合的理解

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

ArrayList集合底层为数组式结构,所以是有序的集合并且可以重复,可以根据下标进行取值,是非线程安全的。

 

ArrayList集合在调用无参构造方法实例化的时候,并没有创建数组,而是在用户第一次执行添加的时候进行创建数组,ArrayList的添加方法,先进行判断数组是否已创建,如果没创建先创建数组,然后调用扩容方法grow,将数组当前的长度+1的值一并传到grow方法中,ArrayList扩容机制为装满就扩容, 扩容大小为    原长+(原长 >> 1)   网上有很多文章都是说乘1.5+1,这其实是不正确的

扩容时新建一个扩容后的新数组 然后把旧数组里的值复制到新的数组里,复制方法是通过c语言实现,效率较高。最后在根据下标进行添加。

删除方法:根据下标进行删除,将下标往后的元素复制,从原下标位置开始依次进行粘贴,将原数组最后一位赋值为null,实际上删除操作就是将数组元素从要被删除数组的下标+1的位置开始向下标位依次左移。

最大值:integer最大值-8

Fast-fail机制检测bug    modCount

猜你喜欢

转载自blog.csdn.net/Luisc_/article/details/93035250
今日推荐