ArrayList扩容
发布时间:2020-12-15 07:25:55 所属栏目:Java 来源:网络整理
导读:ArrayList有两个构造方法: 空参构造方法: 当实例化ArrayList没有传入参数时,创建一个长度为0,空的Object数组存储空间。(在调用add方法时,才会分配存储长度。) private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayLi
ArrayList有两个构造方法:空参构造方法:当实例化ArrayList没有传入参数时,创建一个长度为0,空的Object数组存储空间。(在调用add方法时,才会分配存储长度。) private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } 有参构造方法:在实例化时直接传入存储长度,以传入的长度为Object数组的长度。 public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } 添加元素与扩容:ArrayList使用一个size变量记录当前存储的元素个数。 当调用add方法时,会判断数组长度是否足够存储size+1个元素。 如果不足则调用grow方法进行扩容,每次扩容为旧数组长度的1.5倍。 扩容分为两步: 1.把旧数组中的元素复制到一个更大的新数组中。 2.把需要添加的元素添加到新数组中。 public boolean add(E e) { //判断存储空间是否足够,不够则扩容 ensureCapacityInternal(size + 1); // Increments modCount!! //最后添加传入的元素 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |