模仿ArrayList底層實現

製做一個簡單的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 }
View Code

第二步: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 }
View Code

第三步: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 }    
View Code

到此,咱們可使用本身實現的一些方法!this

相關文章
相關標籤/搜索