ArrrayList底层代码的实现

一、定义变量

首先要想实现该块代码,必须定义三个私有变量。

private Object[] elementData;//该变量用来存储容器中元素的个数。
private int size;//该变量表示当前容器已经存在的元素个数;
private static finnal int FAULT_CAPACITY = 10;//默认当前容器允许存储的元素个数为10个。

二、定义构造方法

//其核心代码如下所示:

public Test(int index){
        if(size<0){
           throw new RunTimeException('容器容量不能为负数!");
}else if(size==0){
            elementData = new Object[FAULT_CAPACITY];
}else{
            elementData = new Object[index];
      }
}

二、main主方法

//其核心代码如下所示:

public static void main(String[] args){
              Test  t = new Test(2);
}

三、添加元素方法

//其核心代码如下所示:

public void add(E element){
             if(size==elementData.length){
                    Object[] newArray = new Object[elementData.length+(elementData.length>>1)];
                    System.arraycopy(elementData,0,newArray,0,elementData.length);
                    elementData = newArray;
            }
                 elementData[size++]  = element;
}

四、判断索引是否合法方法

//其核心代码如下所示:

public void checkArrage(int index){
          if(index<0||index>size-1){
                  throw new RunTimeException("当前索引不合法!+index");
}

五、获得元素个数方法

//其核心代码如下所示:

public int size(){
             return size;
}

六、判断容器是否为空方法

//其核心代码如下所示:

public boolean isEmpty(){
              return size==0?true:false;
}

七、获得指定位置元素方法

//其核心代码如下所示:

public E get(int index){
              checkArrage(index);
              return (E)elementData[index];
}

八、移除元素方法

//其核心代码如下所示:

public void move(E element){
           for(int i=0;i<size;i++){
                  if(element.equals(get(i))){               
            }
      }
}

九、移除指定位置元素方法

//其核心代码如下所示:

public void move(int index){
             checkArrage(index);
            int nummoved = size-index-1;
            if(nummoved>0){
                  System.arraycopy(elementData,index+1,elementData,index,nummoved){
             }
             elementData[--size] = null;
      }
}

十、设定方法

//其核心代码如下所示:

public void set(int index, E element){
            checkArrage(index);
            elementData[index] = element;
}

十一、字符转换方法

//其核心代码如下所示:

public String toString(){
            StringBulider sb = new StringBulider();
            sb.append('[');
            for(int i=0;i<size;i++){
                   sb.append(elementData[i]+",");
          }
           sb.setCharAt(sb.length()-1,']');
            return sb.toString();
}

PS:以上方法只需要在main方法里面调用就行。

posted @ 2019-05-26 11:55  荏苒时光  阅读(390)  评论(0编辑  收藏  举报