自己实现简单版ArrayList

 这里只是主要写了ArrayList在添加元素时的核心,就是扩容,如果数组空间不足那就扩容到原来的1.5倍调用Arrays.copyOf()方法将旧数组中的元素复制到新数组中。

下面是代码实现以及测试,很简单很简单,很多地方没有进行条件判断等等,详细实现还是看源码或者这两篇文章:

https://www.cnblogs.com/ygj0930/p/5965205.html

https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial

package fund;
import java.util.Arrays;

/**
 * Created by Hollake on 2019\6\17 0017 17:26.
 */
public class MyArrayList<E> {
    
    private int size = 0;
    private static final int DEFAULT_CAPACITY = 10;
    private Object [] elementData;

    MyArrayList(int size) {
        if (size < 0) {
            throw new IllegalArgumentException("数组大小不能小于0");
        }
        this.elementData = (E[])new Object[size];
    }
    MyArrayList(){
        this(DEFAULT_CAPACITY);
    }

    public void add(E e) {
        if (elementData.length == size) {
//            要带括号
            int newSize = size + (size >> 1);
            resize(newSize);
        }
        elementData[size++] = e;
    }

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

    private void resize(int newSize) {
        elementData = Arrays.copyOf(elementData, newSize);
    }

    public int size() {
        return size;
    }
    public static void main(String[] args) {
        MyArrayList<Integer> list = new MyArrayList<>();
        for (int i = 0; i < 50; i++) {
            list.add(i);
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.getIndex(i));
        }
    }

}

猜你喜欢

转载自blog.csdn.net/Hollake/article/details/92658694
今日推荐