自定义ArrayList并实现add方法
public class MyArrayList<E> {
//定义数组,用于存储集合的元素
private Object[] elementData;
//定义变量,用于记录数组元素的个数,这里指定是多少就是多少,size后面的即使有数据也不算
private int size;
//定义空数组,用于在创建对象的时候给elementDat初始化
private Object[] emptyArray={};
//定义常量,用于记录集合的容量
private final int DEFAULT_CAPACITY=10;
//构造方法
public MyArrayList(E e){
//给elementData初始化
elementData=emptyArray;
}
//定义add方法
public boolean add(E e){
//调用的时候判断是否需要扩容
//将元素添加到集合
elementData[size++]=e;
return true;
}
//简单扩容
public void grow(){
//判断集合存储元素的数组是否等于空数组
if(elementData==emptyArray){//是空数组就进行第一次扩容
elementData=new Object[DEFAULT_CAPACITY];
}
//1.5倍扩容
//如果size==集合存元素数组的长度,就需要扩容
if(size==elementData.length){
//先定义变量的老容量
int oldCapacity=elementData.length;
//核心算法
int newCapacity=oldCapacity+(oldCapacity>>1);
//创建新数组,长度为newCapacity
Object[] obj=new Object[newCapacity];
//拷贝元素
System.arraycopy(elementData,0,obj,0,elementData.length);
//把新数组的地址赋值给elementData
elementData=obj;
}
}
}