一维数组的自动扩容;
import java.util.Arrays;
public class IntList {
public static final int DEFAULT_ARRAY_COUNT = 16;
int[] array;
private int size = 0;
public IntList() {
array = new int[DEFAULT_ARRAY_COUNT];
}
// 向数组中增加指定的元素
public int add(int value) {
return add(value, size);
}
// 向数组中指定位置增加指定的元素
public int add(int value, int position) {
// 如果插入的位置不合法,则直接返回
if (position > size || position < 0) {
System.err.println("越界了");
return -1;
}
if (size == array.length) {
dilatation();
}
// 数组移位操作
for (int i = size; i > position; i--) {
array[i] = array[i - 1];
}
array[position] = value;
size++;
return 0;
}
// 移除数组中指定位置的元素
public int remove(int position) {
if (position > size || position < 0)
return -1;
// 将待删除的值保存起来,等待返回
int removeValue = array[position];
for (int i = position; i < size - 1; i++) {
array[i] = array[i + 1];
}
array[size - 1] = 0;
size--;
return 0;
}
// 数组的扩容
private int[] dilatation() {
// int[] tempArray = new int[array.length + DEFAULT_ARRAY_COUNT];
array = Arrays.copyOf(array, array.length + DEFAULT_ARRAY_COUNT);
return array;
}
public int size() {
return size;
}
@Override
public String toString() {
if (size <= 0) {
return "[]";
}
String resultString = "[";
for (int i = 0; i < size; i++) {
if (i == size - 1) {
resultString = resultString + array[i] + "]";
} else {
resultString = resultString + array[i] + ", ";
}
}
return resultString;
}
}