ArrayList的add()扩容原理

来源:互联网 发布:jade软件怎么编辑数据 编辑:程序博客网 时间:2024/06/18 15:12
package list_pkg;import java.util.Arrays;/** * ArrayList add()将任意元素添加到ArrayList的末尾
 * @author Administrator * */public class ArrayListAddFun {int[] elementData ={1,2,3,4,5,6}; int size = elementData.length;public Boolean add(int e){ensureCapacity(size + 1);//扩容,确保内部数组有足够的空间elementData[size++] = e;//将元素添加到数组的末尾,完成添加return true;}public void ensureCapacity(int minCapacity){//minCapacity最小需要的容量int oldCapacity = elementData.length;if(minCapacity > oldCapacity){//如果原容量小于最小需要的容量,则进行扩容;int newCapacity = (oldCapacity * 3)/2;//扩容到原来的1.5倍if(minCapacity > newCapacity){//如果扩容后小于最小需要的容量,就用最小需要的容量newCapacity = minCapacity;}elementData = Arrays.copyOf(elementData, newCapacity);//进行扩容的数组复制}}public static void main(String[] args) {ArrayListAddFun arr = new ArrayListAddFun();arr.add(8);}}