Java教程

JDK源码-ArrayList

本文主要是介绍JDK源码-ArrayList,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

①、当通过 ArrayList() 构造一个空集合,初始长度是为0的,size也为0,第 1 次添加元素,会创建一个长度为10的数组,并将该元素赋值到数组的第一个位置,下标为0的位置。

②、第 2 次添加元素,集合不为空,而且由于集合的长度size+1是小于数组的长度10,所以直接添加元素到数组的第二个位置,不用扩容。

③、第 11 次添加元素,此时 size+1 = 11,而数组长度是10,这时候创建一个长度为10+10*0.5 = 15 的数组(扩容1.5倍),然后将原数组元素引用拷贝到新数组。并将第 11 次添加的元素赋值到新数组下标为10的位置。

④、当第一次扩容容量 oldCapacity + (oldCapacity >> 1)大于最大集合大小Integer.MAX_VALUE - 8时,判断size+1和Integer.MAX_VALUE - 8的大小,第一次size+1肯定小,这时扩容到Integer.MAX_VALUE - 8

⑤、当集合size=Integer.MAX_VALUE - 8时,然后添加元素时,创建一个大小为 Integer.MAX_VALUE 的数组,在进行元素添加。

⑥、第 Integer.MAX_VALUE + 1 次添加元素时,抛出 OutOfMemoryError 异常。

这篇关于JDK源码-ArrayList的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!