线性表数组实现

来源:互联网 发布:mysql进程意外终止 编辑:程序博客网 时间:2024/05/21 21:18
/** * 线性表,数组实现 * @author yuli * */public class MyArrayList<T> {    private static final int DEFAULT_CAPACITY = 10;//默认容量    private int size;    private Object[] items;    public MyArrayList() {        clean();    }    public void clean(){        this.size=0;        swap(DEFAULT_CAPACITY);    }    public int size(){        return size;    }    /**     * 在索引下替换一个元素     * @param t     * @param index     * @return     */    public T set(T t,int index){        if(index < 0 || index > size){            throw new ArrayIndexOutOfBoundsException(index);        }        @SuppressWarnings("unchecked")        T old = (T) items[index];        items[index] = t;        return old;    }    /**     * 获得索引下的元素     * @param index     * @return     */    @SuppressWarnings("unchecked")    public T get(int index){        if(index < 0 || index> size){            throw new ArrayIndexOutOfBoundsException(index);        }        return (T) items[index];    }    /**     * 在末尾添加一个元素     * @param t     */    public void add(T t){        if(size == items.length){            swap(size * 2 + 1);        }        items[size++] = t;    }    /**     * 在索引下增加一个元素     * @param t     * @param index     */    public void add(T t,int index){        if(index < 0 || index> size){            throw new ArrayIndexOutOfBoundsException(index);        }        //如果元素的长度等于改元素添加元素的个数,就扩容        if(size == items.length){            swap(size * 2 + 1);        }        for(int i = size ;i > index;i++){            items[i] = items[i-1];        }        items[index] = t;        size++;    }    /**     *移除索引的元素     **    @SuppressWarnings("unchecked")    public T remove(int index){        if(index < 0 || index> size){            throw new ArrayIndexOutOfBoundsException(index);        }        Object item = items[index];        for(int i = index;i<size;i++){            items[i] = items[i+1];        }        size--;        return (T) item;    }    /**     * 扩容,交换元素     * @param newSize     */    public void swap(int newSize){        if(newSize < size){            return;        }        Object[] newItems = new Object[newSize];        for(int i=0;i<this.size;i++){            newItems[i]=items[i];        }        this.items = newItems;    }}
原创粉丝点击