final sclass SimpleStack extends RandomAccessAbstractList { new ArrayList l; int peak; public A get(int i) { ret l.get(i); } public int size() { ret l.size(); } public A set(int i, A a) { ret l.set(i, a); } public void add(int i, A a) { l.add(i, a); checkSize(); } public A remove(int i) { l.remove(i); checkSize(); } void checkSize { int n = size(); if (n > peak) peak = n; // record new peak size (~actual capacity) if (n*2 < peak) { // shrink physically when below half of peak trimToSize(l); peak = n; } } }