数组手动实现ArrayList

public class ArrayListDemo {
    private static final int DEFAULT_LENGTH = 10;
    private Object[] datas;
    private int size;
    
    public ArrayListDemo() {
        super();
        this.datas = new Object[DEFAULT_LENGTH];
    }
    
    public int size(){
        return size;
    }
    
    public void add(Object obj){
        resizeLength(size+1);
        datas[size++] = obj;
    }

    private void resizeLength(int minLength) {
        if(minLength - datas.length>0){
            datas = Arrays.copyOf(datas, 10);
        }
    }
    
    public Object get(int index){
        //校验是否越界
        return datas[index];
    }
    
    /**
     * arraycopy(Object src, int srcPos,
           Object dest, int destPos, int length)
        src:源数组;    srcPos:源数组要复制的起始位置;
        dest:目的数组;  destPos:目的数组放置的起始位置;length:复制的长度。
     * @param index
     * @return
     */
    public Object remove(int index){
        //校验越界
        Object oldValue = datas[index];
        int moved = size - index - 1;//这个元素后面有多少元素
        if (moved > 0)
            System.arraycopy(datas, index+1, datas, index, moved);//把后面的元素统一往前移
        datas[--size] = null;//把对象的引用去掉,对象回收
        return oldValue;
    }
    
    public int indexOf(Object obj){
        if(obj == null){
            for(int i=0;i

你可能感兴趣的:(数组手动实现ArrayList)