How to go through Hashmap with subkeys? [duplicate]

0

How to traverse a HashMap that has another HashMap ?

for (Map.Entry<Date,HashMap<String, Integer>> entrada : m.entrySet()) {
   // ....
}
    
asked by anonymous 26.01.2015 / 13:21

1 answer

0

See the code below, illustrating several ways to do this iteration:

See that you can access the values via keys, values, or by retrieving values through keys. Notice here the great flexibilities of using Maps.

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class HashMapInHashMap {

    public static void main(String[] args) {

        // mapa representado o problema
        Map<Date, Map<String, Integer>> map = new HashMap<Date, Map<String, Integer>>();

        // iterando-se sobre cada entry
        for (Map.Entry<Date, Map<String, Integer>> entry : map.entrySet()) {

            // recupere a chave de cada entry
            Date key = entry.getKey();

            // recupera o valor da entry atual, que é um mapa
            Map<String, Integer> value = entry.getValue();

            // itere itere sobre todas as chaves do mapa a cima
            for (String keyInner : value.keySet()) {

            }

            // itere sobre todos os valores do mapa a cima
            for (Integer valueInnter : value.values()) {

            }
        }

        // uma maneira mais fácil é iterar sobre cada chave e valor, dos mapa referente ao valor
        for (Map<String, Integer> innerMap : map.values()) {
            // itere sobre cada chave
            for (String key : innerMap.keySet()) {

            }

            // itere sobre cada valor
            for (Integer value : innerMap.values()) {

            }
        }

        // agora recupera o valor baseado na chave corrente
        for (Date key : map.keySet()) {

            // recupere o valor
            Map<String, Integer> value = map.get(key);

            // itere sobre o mapa
            for (String keyInner : value.keySet()) {
                Integer valueInner = value.get(keyInner);
            }
        }
    }
}
    
26.01.2015 / 14:02