1 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL]
8 * An unsynchronized Vector implementation; same semantics as
9 * java.util.Vector. Useful for JDK1.1 platforms that don't have
10 * java.util.ArrayList.
11 * @see java.util.Vector
13 public class Vec implements Serializable {
15 private Object[] store;
18 public Vec() { this(10); }
19 public Vec(int i) { store = new Object[i]; }
21 private void grow() { grow(store.length * 2); }
22 private void grow(int newsize) {
23 Object[] newstore = new Object[newsize];
24 System.arraycopy(store, 0, newstore, 0, size);
28 public void removeAllElements() {
29 for(int i=0; i<size; i++) store[i] = null;
33 public void toArray(Object[] o) {
34 for(int i=0; i<size; i++)
38 public int indexOf(Object o) {
39 for(int i=0; i<size; i++)
40 if (store[i] == o) return i;
44 public void addElement(Object o) {
45 if (size >= store.length) grow();
49 public Object elementAt(int i) {
53 public Object lastElement() {
54 if (size == 0) return null;
55 return store[size - 1];
58 public int size() { return size; }
60 public void setSize(int newSize) {
61 if (newSize < 0) throw new RuntimeException("tried to set size to negative value");
62 if (newSize > store.length) grow(newSize * 2);
64 for(int i=newSize; i<size; i++)
69 public void copyInto(Object[] out) {
70 for(int i=0; i<size; i++)
74 public void removeElementAt(int i) {
75 if (i >= size || i < 0) throw new RuntimeException("tried to remove an element outside the vector's limits");
76 for(int j=i; j<size - 1; j++)
77 store[j] = store[j + 1];
81 public void setElementAt(Object o, int i) {
82 if (i >= size) setSize(i);
86 public void removeElement(Object o) {
87 for(int i=0; i<size; i++)
94 public void insertElementAt(Object o, int at) {
95 if (size == store.length) grow();
96 for(int i=size; i>at; i--)
97 store[i] = store[i-1];