Я таких ArrayList не один десяток написал , разных имплементаций ,
ArrayList умножает память на 3/2 и перегрузить это нельзя в отличии от вектора,
и это одна имлементация интерфэйса java.util.List другая это Linked List,
пользуешь когда не знаешь сколько элементов будет.