Como iterar uma coleção dentro de uma colecao e assim por diante

Bom, estou com o seguinte problema, tenho uma Biblioteca, tenho uma classe que gerencia ListadeCategorias de livros, esta por sua vez tem uma ListadeSubCategorias que por sua vez possui uma Lista de Livros. Gostaria de saber como faco uma iteracao sem gerar Excecao de Concorrencia.

String s = "[livro = %s, categoria = %s, subcategoria = %s]"; // <== essa llinha não é necessária for (ListaDeCategoria categoria : listadeCategorias) { for(ListadeSubCategoria subCategoria : categoria.getSubCategorias()) { for(Livro livro: subCategoria.getLivros()) { System.out.println(String.format(s,livro.getNome(),categoria.getNome(),subCategoria.getNome()); } } }

Apenas iterar não gera problema de concorrência…talvez vc queira remover um item é isso?

Se for, terá que usar o for antigo…

Flw

O Exemplo do Lavieri está ótimo!

Você consegue navegar na conleção na boa!

Mas uma outra pergunta, porque você escolheu fazer algo meio que complicado deste jeito?

Isso, na verdade gera excecao quando REMOVO elemento, tenho que usar o que ai?

Não fui eu que resolvi fazer complicado assim… heeheh… é um trabalho de POO,
vlw

Como eu disse acima:

for (int i = 0; i < listaCategorias.size(); i++) {

   Categoria categoria = listadeCategorias.get(i);

   //Remover categoria?
   listadeCategorias.remove(categoria);

   for (int j = 0; j < categoria.getSubCategorias().size(); j++) {

      SubCategoria subCategoria = categoria.getSubCategorias().get(j);
      
      //Remover subcategoria?
      categoria.getSubCategorias().remove(subCategoria);

      for (int k = 0; k < subCategoria.getLivros().size(); k++) {
         Livro livro = subCategoria.getLivros().get(k);

         //Remover livro?
         subCategoria.getLivros().remove(livro);
      }
   }
}

Creio que isso resolve, ai vc pode remover em qualquer ponto sem dar erro de concorrência.

[]'s

Vlw,
Funcionou sim.!