Como manipular uma Lista que está como valor dentro de um map?

Olá de novo, pessoal.
Essa semana tive uma duvida e aprendi um pouco sobre map.
Bom… Agora que o estou usando tenho uma necessidade e não consigo ainda encontrar respostas.
Consigo obter os valores do map pesquisando pela chave. Ok.
Mas o meu map tem como valor uma lista.
Aqui está um exemplo:

Chave: espessura, Valor: [3.0, 1.0, 4.0, 1.2, 1.5, 2.0, 0.8]
Chave: comprimento, Valor: [80, 90, 100, 110, 118]
Chave: numero_prateleiras, Valor: [3, 4, 5, 6, 7]
Chave: largura, Valor: [30, 40, 50, 60]
Chave: altura, Valor: [150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260]

Eu quero fazer uma combinação de todos esses atributos.

Exemplo:
Vamos supor que pra cada chave tivesse um ArrayList.

então a combinação seria:

for (int e = 0; e < espessura.size(); e++)
  for (int c = 0; c < comprimento.size(); e++)
   for (int l = 0; l < largura.size(); l++)
   .
   .
   .

Eu queria manipular a lista que está dentro do map de modo a ter o mesmo resultado que o exemplo a cima vai me dar.

Obrigado

Mande parte do código esse esse Map é criado, ou carregado, ou lido, mande alguma coisas, provavelmente com alguns loopings resolve o problema.

Bom, usando uma notação nao muito legivel:

while (((List)map.get("espessura")).hasNext()) 
     while (((List)map.get("comprimento")).hasNext()) 
          while (((List)map.get("largura")).hasNext()) 

Pra usar um valor dentro da iteracao poderia usar:

((List)map.get("espessura")).next(); //ai ja nao sei se sua lista é tipada, se é Strings ou Numbers, sei la

Mas ainda acho melhor vc guardar primeiro as referencias das coleções, e depois iterar com elas.
Apenas fiz a sintaxe como vc pediu.

Hm… blz. Mas lembrando que o nome das chaves não vai ser fixo.
Então eu nao posso definir o nome do jeito que voce colocou.
Não posso escrever map.get(“nome_qualquer”).
então eu gostaria de saber se eu posso, usando seu exemplo, fazer um iterator para o mapa, pegar o valor de cada chave e escrever:

 while (((List)map.get(chave)).hasNext())
  while (((List)map.get(chave)).hasNext())
   while (((List)map.get(chave)).hasNext())

PS: Estou perguntando pq estou na casa da minha noiva e não tenho como futucar seu código :slight_smile:

Maps nao implementam diretamente a interface Iterator.
Nao existe um “map.iterator()”

O que vc pode fazer é:

    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
    }

Lembrando que, a menos que vc esteja criando um TreeMap(ordem de chave) ou LinkedHashMap (ordem de entrada), sua iteração nao tera a mesma ordem garantida sempre.