List接口中的子类ArrayList底层实现是数组,因此本文我们通过阅读源代码,来自己实现ArraylList,以帮助更好的理解。
所有ArrayList中的方法,都可以归结为对数组的操作。
在对数组进行操作时,需要重点考虑数组越界以及数组扩容问题。Java中提供了arraycopy()很方便的实现了数组的扩容。
本文未能全部实现List中的所有接口,主要实现了以下方法:
- 构造方法
- isEmpty()
- add(Object obj)、add(int index,Object obj)
- get(int index)
- set(int index,Object obj)
- remove(int index),remove(Object obj)
/** * 自己实现一个ArrayList,更好的理解ArrayList类的底层结构 */ package cn.zhouxj.collection; import java.util.ArrayList; import java.util.List; public class MyArrayList { private Object[] elementData;//ArrayList 的底层实现依赖于数组,所有的方法都是对这个数组进行操作 private int size;//size表示数字元素的个数,注意区分数组中的length。length表示有多少车位,size表示停了多少车 public int size(){ return size; } //构造方法 public MyArrayList(){ this(10);//默认数组长度为10 } public MyArrayList(int initia