背景
我々はなど、キュー、スタック、など内部の配列Javaで多くの構造が存在することを知っているが、これらはコンフィギュレーションのようなデータ構造配列、リストまたはツリーの基本的なデータ構造です。そこでここでは、拡張の配列の独自の定義、スタックやキューに拡張するために使用することができます。
コード
public class UniArr<E> {
private E[] arr;
private int size;
private final int DEFAULT_CAPACITY = 10;
public UniArr() {
arr = (E[]) new Object[DEFAULT_CAPACITY];
}
public UniArr(int capacity) {
arr = (E[]) new Object[capacity];
}
private void add(int index,E e) {
if (index < 0 || index > arr.length) {
throw new IllegalArgumentException("索引异常");
}
if (size == arr.length) {
E[] newArr = (E[]) new Object[2 * size];
for (int i = 0; i < size; i++) {
newArr[i] = arr[i];
}
arr = newArr;
}
for (int i = size; i > index; i--) {
arr[i] = arr[i - 1];
}
arr[index] = e;
size++;
}
public void add(E e) {
add(size, e);
}
public E remove(int index) {
if (index < 0 || index > arr.length) {
throw new IllegalArgumentException("索引异常");
}
E e = arr[index];
for (int i = index; i < size - 1; i++) {
arr[i] = arr[i + 1];
}
arr[size-1] = null;
size--;
return e;
}
public E remove(E e) {
int i = indexOfEle(e);
return remove(i);
}
private int indexOfEle(E e) {
int index = 0;
for (int i = 0; i < size; i++) {
if (arr[i].equals(e)) {
index =i;
}
}
return index;
}
@Override
public String toString() {
StringBuilder sbr = new StringBuilder();
sbr.append("[");
for (int i = 0; i < size; i++) {
sbr.append(arr[i]);
if (i < size - 1) {
sbr.append(",");
}
}
sbr.append("]");
return sbr.toString();
}
}