要制作动态数组在添加元素的时候如果数组的大小满了,那么就重新开辟空间
/**
* 向指定位置插入元素
*
* @param index
* @param e
*/
public void add(int index, T e) {
if (index < 0 || index > size) {
throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size");
}
if (size == data.length) {
resize(2 * data.length);
}
for (int i = size - 1; i >= index; i--) {
data[i + 1] = data[i];
}
data[index] = e;
size++;
}
/**
* 动态开辟内存空间
* @param newCapacity
*/
private void resize(int newCapacity) {
T[] newData = (T[]) new Object[newCapacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
data = newData;
}