Perchè non provi a fare un ArrayList di ArrayList, cioè
int n = 10;//numero di colonne
ArrayList<ArrayList> righe = new <ArrayList>ArrayList();
//ogni volta che devi aggiungere una riga, basta che fai
righe.add(new <E>ArrayList(n));//dove E è il tipo contenuto in ogni entry dell'array
//inserisci così un elemento nell'array della prima riga, devi poi ovviamente
controllare di non inserire più di n elementi in una riga, se no ti crea colonne in più
righe.get(0).add(elemento di tipo e);
//per leggere un elemento j-esimo dalla riga i-esima farai quindi
righe.get(i).get(j);
il codice non l'ho provato, comunque penso che dovrebbe funzionare
se vuoi cercare qualcosa di meglio ti conviene guardare le API di Java, magari esiste una classe che fa già tutto lei
ciao