Java为我们提供了ArrayList、LinkedList等类,里面的一些方法让我们能很方便的对常见的数据结构进行增删改查(add\remove\set\get)等操作。下面让我们尝试自己实现一个动态数组类Array。
一、Array的结构
虽然是数组类,但类里面还是依靠数组来存储,所以给Array一个成员变量E[] data数组来存放数据。并且为了方便的知道当前数组中存放了多少元素,我们给Array一个成员变量int size来记录。如下:
(注意:这里的size并不是数组的长度,而是数组内有多少个元素。比如数组长度data.length=5,但里面只存放了三个元素,那么size=3)
public class Array<E> {
private E[] data;
private int size;
}
我们都知道,必须在定义数组时指定长度capacity,所以我们有如下构造函数:
public Array(int capacity) {
//由于是泛型,所以先定义为Object再强转。
data = (E[]) new Object[capacity];
size = 0;
}
public Array() {
this(16);
}
然后是一些基本的get方法:
//获得数组中的元素个数
public int getSize() {
return size;
}
//获得数组长度
public int getCapacity() {
return data.length;
}
//判断数组内元素个数是否为空
public boolean isEmpty() {
return size == 0;
}
接下来就是对数组的增删改查了。
增
//在数组的某个位置插入一个元素
public void add(int index,