製做一個簡單的Arraylist的底層執行實現:java
咱們須要有三個類:① ArrayList.java;② List.java;③ Test.java;以此作一個簡單的模仿數組
第一步:ArrayList.java類app
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 }
第二步:List.java類:ide
1 public interface List{ 2 //添加元素方法 3 public void add(Object obj); 4 5 //元素的長度 6 public int size(); 7 8 //獲取指定位置上的元素 9 public Object get(int index); 10 11 //判斷集合是否爲空 12 public boolean isEmpty(); 13 }
第三步:Test.java類:ui
1 public class Test{ 2 public static void main(String [] args){ 3 Arraylist list = new Arraylist(); 4 for(int i=0; i<10; i++){ 5 list.add("elem" + i); 6 } 7 System.out.println(isEmpty()); 8 System.out.println(list.size()); 9 System.out.println(list); 10 } 11 }
到此,咱們可使用本身實現的一些方法!this