数组容量及扩容问题:
public class Test {
public static void insert(int index, int element, int[] array, int size) {
if (index < 0 || index > size) {
System.err.println("下标错误");
return;
}
for (int i = size - 1; i >= index; i--) {
array[i + 1] = array[i];
}
array[index] = element;
size++;
}
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
insert(3, 100, a, a.length);
}
}
程序输出:
出现错误,数组容量不够用, array[i + 1] = array[i];出现问题。
改进
// 保证容量够用,否则进行扩容
private void ensureCapacity() {
if (size < array.length) {
return;
}
int newCapacity = array.length * 2;
int[] newArray = new int[newCapacity];
for (int i = 0; i < size; i++) {
newArray[i] = array[i];
}
array = newArray;
}