I have this Map where the key is an Integer and the value is another map. I want to know how to iterate through the second map.
private Map<Integer,Map<Integer,Integer>> transition = new HashMap<Integer, Map<Integer, Integer>>();
I have this Map where the key is an Integer and the value is another map. I want to know how to iterate through the second map.
private Map<Integer,Map<Integer,Integer>> transition = new HashMap<Integer, Map<Integer, Integer>>();
 
    
    private Map<Integer,Map<Integer,Integer>> transition = new HashMap<Integer, Map<Integer, Integer>>();
for (Integer outerKey : transition.keySet()) {
    Map<Integer, Integer> inner = transition.get(outerKey);
    for (Integer innerKey : inner.keySet()) {
        Integer value = inner.get(innerKey);
    }
}
 
    
    +1 @angel_navarro Another way is using entry set
    Map<Integer, HashMap<Integer, Integer>> map = new HashMap<Integer, HashMap<Integer, Integer>>();
    for (Map.Entry<Integer, HashMap<Integer, Integer>> entry : map.entrySet()) {
        HashMap<Integer, Integer> submap = entry.getValue();
        for (Map.Entry<Integer, Integer> sub_entry : submap.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = "
                    + entry.getValue());
        }
    }
 
    
    I like this idiom better:
for(Map.Entry<Integer,Map<Integer,Integer>> outer : transition.entrySet()){
  Integer outerKey = outer.getKey();
  for(Map.Entry<Integer,Integer> inner : outer.getValue().entrySet()){
    Integer innerKey = inner.getKey();
    Integer innerValue = inner.getValue();
  }
}
By the way, I suggest you take a look at Guava's new collection types, e.g., Multimap, for alternatives to nested collections. Maybe they won't fit your use case today, but it's good to know they exist.
 
    
    private Map<Integer,Map<Integer,Integer>> transition = new HashMap<Integer, Map<Integer, Integer>>();
for(Map.Entry<Integer,Map<Integer,Integer>> entryMap : transition.values())
{
   final Integer outerKey = entryMap.getKey();
   for (Map.Entry<Integer, Integer> entry : entryMap.getValue().entrySet())
   {
       final Integer innerKey = entry.getKey();
       final Integer innerValue = entry.getValue();
   }
}
