手动实现ArrayList

import java.util.Iterator;

/**
 * 手动实现的一个ArrayList,封装了数组的一些常用操作**/
public class MyArrayList implements Iterable {
    //数组默认的长度为10
    private static final int DEFAULT_CAPACITY=10;
    //数组的大小
    private int size;
    //泛型T类型所代表的数组
    private T[] theItems;
    //构造方法用clear()来初始化数组
    public MyArrayList(){
        clear();
    }
    //初始化数组,让数组默认长度为10
    public void clear() {
        size=0;
        ensureCapacity(DEFAULT_CAPACITY);
    }
    //返回数组的大小
    public int size(){
        return size;
    }
    public boolean isEmpty(){
        return size()==0;
    }
    public void trimToSize(){
        ensureCapacity(size());
    }
    public T get(int index){
        if (index<0||index>size()){
            throw new ArrayIndexOutOfBoundsException();
        }
        return theItems[index];
    }
    public T set(int index,T newVal){
        if (index<0||index>=size){
            throw new ArrayIndexOutOfBoundsException();
        }
        T old=theItems[index];
        theItems[index]=newVal;
        return old;
    }
    //重新给数组分配长度,for循环是用来拷贝数据的
    private void ensureCapacity(int newCapacity) {
        if (newCapacityindex;i--){
            theItems[i]=theItems[i-1];
        }
        theItems[index]=x;

        size++;
    }
    //删除元素,for循环用于将要删除的元素的后一个下标的位置
    //一个一个往前移动,并用index+1下标的元素直接覆盖index下标的元素
    public T remove(int index){
        T removedItem=theItems[index];
        for (int i=index;i iterator() {
        return new ArrayListIterator();
    }

    private class ArrayListIterator implements Iterator{
        private int current=0;

        @Override
        public boolean hasNext() {
            return current

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