package p0106;
public class MyVector {
private Object[] data;
private int incr;
private int count;
public MyVector() {
this(10, 0);
}
public MyVector(int capacity) {
this(capacity, 0);
}
public MyVector(int capacity, int increment) {
data = new Object[capacity];
this.incr = increment;
}
public void add(Object o) {
if (count == data.length) {
Object temp[] = null;
if (incr == 0) {
temp = new Object[data.length * 2];
} else {
temp = new Object[data.length + incr];
}
for (int i = 0; i < data.length; i++) {
temp[i] = data[i];
}
data = temp;
}
data[count] = o;
count++;
}
public int size() {
return count;
}
public int capacity() {
return data.length;
}
public void remove(Object o) {
for (int i = 0; i < count; i++) {
if (data[i].equals(o)) {
remove(i);
break;
}
}
}
public void remove(int index) {
for (int i = index; i < count - 1; i++) {
data[i] = data[i + 1];
}
count--;
}
public Object elementsAt(int index) throws Exception {
if (index >= count || index < 0) {
throw new Exception("index 错误");
}
return data[index];
}
public void trimToSize() {
Object[] temp = new Object[count];
for (int i = 0; i < count; i++) {
temp[i] = data[i];
}
data = temp;
}
public Object firstElement() {
return data[0];
}
public boolean isEmpty() {
return count == 0;
}
public static void main(String[] args) {
MyVector vec = new MyVector(10, 5);
vec.add("ddddd");
vec.add("ddddd");
vec.add("ddddd");
vec.add("ddddd");
vec.trimToSize();
System.out.println(vec.size());
System.out.println(vec.capacity());
}
}