class DynamicArray{
public void add(Object obj); //追加一个新元素
public void add(int index,Object obj); //在某个位置插入一个元素
public void remove(int index); //删除指定位置的元素
public Object get(int index); //根据索引,获得某个位置的元素
public void set(int index,Object obj); //修改指定位置的元素
public boolean contain(Object obj);//是否包含某个元素
}
代码
public class DynamicArray<E> {
private E[] data;
private int size;
public DynamicArray(int capacity){
this.data=(E[]) new Object[capacity];
size=0;
}
public DynamicArray() {
this(10);
}
//在某个位置插入元素
private void renew(int capacity) {
E[] dataNew = (E[]) new Object[capacity];
for (int i = 0; i < size; i++) {
dataNew[i] = data[i];
}
data = dataNew;
}
public void add(int index, E element) {
if (size == data.length) {
renew(data.length * 2);
}
if (index > size || index < 0) {
throw new IllegalArgumentException("下标越界");
}
for (int i = size; i > index; i--) {
data[i] = data[i - 1];
}
data[index] = element;
size++;
}
//追加一个元素
public void add(E element) {
add(size, element);
}
//删除指定位置元素
public void delete(int index) {
if (index >= size || index < 0) {
throw new IllegalArgumentException("delete failed, index is illegal");
}
E ret = data[index];
for (int i = index; i < size; i++) {
data[i] = data[i + 1];
}
size--;
}
//修改指定位置的元素
public void set(int index, E e) {
if (index >= size || index < 0) {
throw new IllegalArgumentException("set failed, index is illegal");
}
data[index] = e;
}
//是否包含某个元素
public int contain(E e) {
for (int i = 0; i < size; i++) {
if (data[i] == e) {
return i;
}
}
return -1;
}
}