jjn*_*guy 61
在内部ArrayList使用一个Object[].
在向项目添加项目时ArrayList,列表会检查后备阵列是否还有空间.如果有空间,则只在下一个空白处添加新项目.如果没有空间,则创建一个新的较大的数组,并将旧数组复制到新数组中.
现在,还剩下更多空间,新元素将添加到下一个空白区域.
由于人们非常喜欢源代码:
/**
* The array buffer into which the elements of the ArrayList are stored.
* The capacity of the ArrayList is the length of this array buffer.
*/
private transient Object[] elementData;
Run Code Online (Sandbox Code Playgroud)
直接走出JDK.
小智 9
ArrayList使用Object of Object在内部存储数据.
初始化ArrayList时,会创建一个大小为10(默认容量)的数组,并且添加到ArrayList的元素实际上会添加到此数组中.10是默认大小,它可以在初始化ArrayList时作为参数传递.
添加新元素时,如果数组已满,则会创建一个比初始大小多50%的新数组,并将最后一个数组复制到此新数组,以便现在有空格可以添加新元素.
由于使用的基础数据结构是一个数组,因此将新元素添加到列表末尾时,很容易将新元素添加到ArrayList中.当要在其他任何地方添加元素时,比如开头,那么所有元素都必须向右移动一个位置,以便在开头为要添加的新元素创建一个空白空间.这个过程非常耗时(线性时间).但是ArrayList的优点是在任何位置检索元素都非常快(恒定时间),因为它只是使用一个对象数组.
| 归档时间: |
|
| 查看次数: |
60426 次 |
| 最近记录: |