首先,ArrayList的底层是一个数组,我们需要先来创建一个数组,并且使用usesSize记录他的元素个数。然后写出构造函数:
public int[] elem;//null
public int usedSize;//0
public MyArrayList() {
this.elem = new int[5];
}
构造函数可以只进行数组的初始化,因为int型的对象默认初始化为0.
Add
在这里,我们进行Add的术后都是进行的尾插法。要注意的是,在add之前我们应该进行判断是否需要进行扩容;(这里的扩容就是动态类型的体现)。
扩容时:我们知道源码里的扩容是1.5倍扩容,我们为了书写简单直接进行二倍扩容。
// 新增元素,默认在数组最后新增
public void add(int data) {
//1、判断是不是满的
if(isFull()) {
//扩容
this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
}
this.elem[this.usedSize] = data;
this.usedSize++;
}
isFull
这个方法就是我们用来检查是否存储满的标志。
实现很简单,只需要检查usedSize是否和数组的长度相等即可。
pu