如何从另一张地图迭代一张地图?

时间:2014-04-25 13:49:09

标签: java

我有这个Map,其中键是一个Integer,值是另一个map。我想知道如何遍历第二张地图。

private Map<Integer,Map<Integer,Integer>> transition = new HashMap<Integer, Map<Integer, Integer>>();

4 个答案:

答案 0 :(得分:1)

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 :(得分:1)

+1 @angel_navarro另一种方法是使用条目集

    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());
        }
    }

答案 2 :(得分:0)

我更喜欢这个习语:

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();
  }
}

顺便提一下,我建议您查看Guava的新collection types,例如Multimap,以获取嵌套集合的替代方案。也许它们今天不适合你的用例,但知道它们的存在是很好的。

答案 3 :(得分:0)

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();
   }
}