Если вам потребуется другой набор функций, я бы посоветовал расширить ArrayList с вашим собственным классом.Таким образом, вам не придется определять свое поведение более чем в одном месте.
// You can come up with a more appropriate name
public class SizeGenerousArrayList<E> extends java.util.ArrayList<E> {
@Override
public E set(int index, E element) {
this.ensureCapacity(index+1); // make sure we have room to set at index
return super.set(index,element); // now go as normal
}
// all other methods aren't defined, so they use ArrayList's version by default
}