How to traverse a HashMap
that has another HashMap
?
for (Map.Entry<Date,HashMap<String, Integer>> entrada : m.entrySet()) {
// ....
}
How to traverse a HashMap
that has another HashMap
?
for (Map.Entry<Date,HashMap<String, Integer>> entrada : m.entrySet()) {
// ....
}
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);
}
}
}
}