arraylist扩容原理面试题
时间: 2023-08-09 22:07:59 浏览: 122
java集合类原理面试题
5星 · 资源好评率100%
ArrayList是Java中的动态数组,它的扩容原理如下:
1. 初始容量:当我们创建一个ArrayList对象时,它会分配一定的初始容量,比如10个元素。这个初始容量可以通过构造函数中的参数进行指定,如果没有指定,默认为10。
2. 容量不足:当我们往ArrayList中添加元素时,如果当前容量不足以容纳新的元素,就需要进行扩容。扩容意味着需要创建一个更大的数组,并将原有的元素复制到新数组中。
3. 扩容策略:ArrayList的扩容策略是自动增长当前容量的一半。具体来说,当需要扩容时,它会创建一个新的数组,新数组的大小为当前容量加上当前容量的一半。例如,如果当前容量为10,则新数组的大小为15。
4. 复制元素:在进行扩容时,ArrayList会使用System.arraycopy()方法将原有的元素复制到新数组中。这个过程需要遍历原有数组,并将元素逐个复制到新数组的对应位置。
5. 更新引用:一旦完成元素复制,ArrayList会将内部的引用指向新数组,以便后续的操作可以基于新数组进行。
总结起来,ArrayList的扩容原理可以概括为:当需要添加元素时,如果当前容量不足,则创建一个更大的数组,并将原有元素复制到新数组中,然后更新内部引用指向新数组。这样就实现了ArrayList的动态扩容。
阅读全文