sclass SimpleIntList extends RandomAccessAbstractList { int[] data = EMPTY_ELEMENTDATA; int size; private static final int[] EMPTY_ELEMENTDATA = {}; public void add(int i) { ensureCapacityInternal(size+1); data[size++] = i; } public bool add(Int i) { add((int) i); true; } public Int set(int i, Int value) { if (i >= size) fail("Index out of range: " + i); int old = data[i]; data[i] = value; ret old; } public int size() { ret size; } public Int get(int i) { if (i >= 0 && i < size) ret data[i]; throw new IndexOutOfBoundsException(i + "/" + size); } void ensureCapacityInternal(int minCapacity) { if (data.length < minCapacity) grow(minCapacity); } private void grow(int minCapacity) { int oldCapacity = data.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; data = Arrays.copyOf(data, newCapacity); } // always returns a fresh copy int[] toIntArray() { int[] a = new int[size]; System.arraycopy(data, 0, a, 0, size); ret a; } }