制作一个简单的Arraylist的底层执行实现:
我们需要有三个类:① ArrayList.java;② List.java;③ Test.java;以此做一个简单的模仿
第一步:ArrayList.java类
1 public class ArrayList implements List{ 2 3 private Object[] elementData;//底层的数组 4 5 private int size;//元素的个数 6 7 public ArrayList() { 8 this.elementData = new Object[20]; 9 } 10 11 public ArrayList(int initialCapacity) { 12 this.elementData = new Object[initialCapacity]; 13 } 14 15 public void add(Object obj) { 16 //扩容的时机 当list的内容 与 数组的长度相等 17 if(size == elementData.length){ 18 /*//1.创建一个更大空间的数组 19 Object [] arr = new Object [elementData.length * 2]; 20 //2.把旧数组 copy到 新的数组 21 for(int i =0; i<elementData.length;i++){ 22 arr[i] = elementData[i]; 23 } 24 //3.将新的数组引用给旧的数组引用 25 elementData = arr;*/ 26 elementData = Arrays.copyOf(elementData, elementData.length * 2); 27 } 28 /*elementData[size] = obj;//size 从0开始 29 size++;*/ 30 elementData[size++]=obj; 31 } 32 33 public int size() { 34 return size; 35 } 36 37 public Object get(int inedex) { 38 return elementData[inedex]; 39 } 40 41 public boolean isEmpty() { 42 return size == 0; 43 } 44 45 @Override 46 public String toString() { 47 StringBuilder sb = new StringBuilder("["); 48 for(int i=0;i<size;i++){ 49 if(i!=size-1){ 50 sb.append(elementData[i]+","); 51 }else{ 52 sb.append(elementData[i]); 53 } 54 } 55 sb.append("]"); 56 return sb.toString(); 57 } 58 }