JAVA ArrayList原理

其内部原理是 数组

实现原理:

public class MyArrayList {
    //存放元素的数组
    private Object[] elementArray;
    //集合中元素的真实数量
    private int size;
    /**
     * 构造方法
     * 默认创建一个长度为10的数组
     */
    public MyArrayList(){
        elementArray = new Object[10];
    }
    /**
     * 新增
     * 原始这个方法有一个boolean类型的返回值,简便手写代码,不做返回
     * 1、判断数组容量是否满足
     *     如果满足直接添加元素,不满足-->2
     * 2、扩容数组,将原有数据复制到新数组中,再将数组重新赋值给属性中的数组
     * 3、将元素添加到数组中
     * @param obj 新增的元素
     */
    public void add(Object obj){
        if(size < elementArray.length){            
            elementArray[size++] = obj;
        }else{
            int newCapacity = elementArray.length + (elementArray.length >> 1);
            Object[] newArray = new Object[newCapacity];
            for(int i = 0; i < elementArray.length; i++){
                newArray[i] = elementArray[i];
            }
            elementArray = newArray;
            elementArray[size++] = obj;
        }
    }
    /**
     * 返回数组的长度
     *     每次新增元素时,size都执行了++
     * @return size
     */
    public int size(){
        return size;
    }
    /**
     * 将集合转化成一个数组
     *     创建一个长度为size的数组,将elementArray数组中的元素都复制到新数组中,然后返回
     * @return 数组
     */
    public Object[] toArray(){
        Object[] result = new Object[size];
        for(int i = 0; i < size; i++){
            result[i] = elementArray[i];
        }
        return result;
    }
    /**
     * 通过索引值获取元素
     * @param index 索引
     * @return 元素
     */
    public Object get(int index){
        return elementArray[index];
    }
}

原文出处:/show_1EF4sHgeH6dk.html