ArrayList de ArrayList

Tenho uma dúvida de ArrayList de ArrayList. Consigo criar um ArrayList de ArrayList mas não astou acertando recuperar as entradas. Peço ajuda, por favor.
public static void main(String[] args) {
int tamln;
ArrayList<ArrayList>elems = new ArrayList<ArrayList>();
ArrayList elem = new ArrayList();
int tamCol;
tamCol =(int)(Math.random()(15)+5);
System.out.println(tamCol+" Elementos");
for (int k=0;k<tamCol;k++){
elem.clear();
tamln = (int)(Math.random()
(10)+1);
for(int j=0;j<tamln;j++)
elem.add(j+1);
elems.add(elem);
System.out.printf("%s %d",“Elemento nº “,k+1);
for(Iterator it=elem.iterator();it.hasNext();){
System.out.printf(”%s %4d”," ",it.next());

	}
	System.out.println("");					
	}
	
	for(Iterator<ArrayList<Integer>>it1=elems.iterator();it1.hasNext();){
		for(Iterator<Integer> it2= it1.next().iterator();it2.hasNext();){
			
			System.out.printf("%3d",it2.next());				
		}
		System.out.println("");
	}
	
	
}	

}

Bem vindo ao fórum!

Antes de mais nada, sempre que for postar seu código, coloque-o entre as tags e , assim:

System.out.println("Olá mundo");

Fazendo assim ele ficará formatado (não ficou aqui porque desativei as tags). Além disso, se o problema foi resolvido, não custa nada colocar um [RESOLVIDO] no título do tópico.

Quanto à questão, experimente esta classe:

public class ListList {

	public static void main(String[] args) {
		mostraMatriz(criaMatriz());
	}

	private static List<ArrayList<Integer>> criaMatriz() {
		int numeroLinhas = (int) (Math.random() * (15) + 5);
		System.out.println(numeroLinhas + " linhas");
		List<ArrayList<Integer>> matriz = new ArrayList<ArrayList<Integer>>();
		for (int i = 0; i < numeroLinhas; i++) {
			ArrayList<Integer> linha = new ArrayList<Integer>();
			int numeroColunas = (int) (Math.random() * (10) + 1);
			for (int j = 0; j < numeroColunas; j++) {
				linha.add(j + 1);
			}
			matriz.add(linha);
		}
		return matriz;
	}

	private static void mostraMatriz(List<ArrayList<Integer>> matriz) {
		for (ArrayList<Integer> linha : matriz) {
			for (int valor : linha) {
				System.out.print(valor + "\t");
			}
			System.out.println();
		}
	}

}

Procure entendê-la. Qualquer dúvida, poste aqui.

No exemplo acima eu fiz uma analogia à uma matriz matemática e, para ficar claro, segui a nomenclatura usada na matemática.

Ok!Amigo, muitíssimo obrigado.