JavaのArrayListでは、「初期化時に確保するサイズを指定する」「ArrayList#ensureCapacityを使う」ことで、あらかじめ領域を確保できますよね?

ArrayList<Integer> hoge = new ArrayList<Integer>(100); //確保1
hoge.ensureCapacity(100); //確保2

 しかしどちらの書き方でも、C++でのstd::vectorにおけるreserve()のように「領域を確保する」だけであって、resize()のように「要素数が増える」わけじゃありませんよね。つまり、ArrayList#addで後ろに要素を追加はできるものの、ArrayList#setで特定位置に値を代入しようとするとIndexOutOfBoundsExceptionが生じてしまうのです。
 現在ではArrayList#addとforループでとりあえず全要素に0を敷き詰めて対処していますが、もっと綺麗に書く方法は無いものでしょうか。