Java基础-ArrayList的底层源码过程分析
package com.hspedu.collection_; import java.util.ArrayList; @SuppressWarnings({"all"}) public class Course510 { public static void main(String[] args) { // ArrayList底层源码1 /* * 1、ArrayList()底层创建了空的 Object[] elementDate; 存放数据 * 2、add方法会先确定容量空间,是否需要扩容,然后再添加元素,minCapacity初始为10(无参扩容) * int newCapacity = oldCapacity + (oldCapacity >> 1); 1.5倍扩容 * elementData = Arrays.copyOf(elementData, newCapacity); 实现扩容 * modCount记录集合被修改的次数,防止多线程出现异常 * */ ArrayList list = new ArrayList(); for (int i = 1; i <= 10; i++) { list.add(i); } for (int i = 11; i <= 15; i++) { list.add(i); } list.add(100); list.add(200); list.add(null); } }
package com.hspedu.collection_; import java.util.ArrayList; @SuppressWarnings({"all"}) public class Course511 { public static void main(String[] args) { // ArrayList底层源码2 /* * ArrayList(int)创建指定大小的 elementData; * public ArrayList(int initialCapacity) {...} * this.elementData = new Object[initialCapacity]; * 当ArrayList集合的容量不够添加时,扩容基于当前容量大小的1.5倍进行扩容,如 8->12->18->... * * */ ArrayList list = new ArrayList(8); for (int i = 1; i <= 10; i++) { list.add(i); } for (int i = 11; i <= 15; i++) { list.add(i); } list.add(100); list.add(200); list.add(null); } }