Вы можете создать массив элементов ArrayList, так как количество строк фиксировано.
ArrayList[] dynamicArray = new ArrayList[n]();
Примечание. Вам нужно будет разместить объект ArrayList в каждой записи массива. Итак ...
for (int loop = 0; loop < n; loop++)
dynamicArray[loop] = new ArrayList();
ИЛИ если вы хотите, чтобы строки и столбцы были динамическими, вы можете создать ArrayList из ArrayLists ....
ArrayList<ArrayList<T>> dynamicArray = new ArrayList<ArrayList<T>>();
Еще раз, вам нужно будет создать список массивов в каждой новой записи в dynamicArray.