一个简单又有效的Vector的实现类。
public final class LVector {
public Object data[];
public int count;
public LVector(int i) {
if (i <= 0) {
i = 10;
}
data = new Object[i];
count = 0;
}
public LVector(LVector tinyvector) {
count = tinyvector.count;
data = new Object[tinyvector.data.length];
System.arraycopy(tinyvector.data, 0, data, 0, data.length);
}
public final int indexOf(Object obj, int start) {
if (obj == null) {
return -1;
}
for (int i = start; i < count; i++) {
if (obj.equals(data[i])) {
return i;
}
}
return -1;
}
public final int lastIndexOf(Object obj, int start) {
if (start >= count) {
return -1;
}
for (int i = start; i >= 0; i--) {
if (obj.equals(data[i])) {
return i;
}
}
return -1;
}
public final int removeElementAt(int i) {
if (i >= count || i < 0) {
return -1;
}
int j;
if ((j = count - i - 1) > 0) {
System.arraycopy(data, i + 1, data, i, j);
}
count--;
data[count] = null;
return 0;
}
public final int insertElementAt(Object obj, int i) {
int pos = count + 1;
if (i >= pos) {
return -1;
}
if (pos > data.length) {
grow(pos);
}
System.arraycopy(data, i, data, i + 1, count - i);
data[i] = obj;
count++;
return 0;
}
public final void addElement(Object obj) {
int i = count + 1;
if (i > data.length) {
grow(i);
}
data[count++] = obj;
}
private void grow(int i) {
int len = data.length;
Object src[] = data;
int k = len * 2;
if (k < i) {
k = i;
}
data = new Object[k];
System.arraycopy(src, 0, data, 0, count);
}
}