如何迭代和打印以Integer为值的嵌套HashMap



我想打印一个嵌套的HashMap,它是:

HashMap<Integer,HashMap<Character,Integer>> map;

我搜索了很多,但找不到打印Integer的方法,因为当我在上面使用getValues((时,它会告诉我:"找不到符号"。(因为它是一个整数值(

这就是我试图做的:

public void print(){
   for(Map.Entry<Integer, HashMap<Character,Integer>> t :this.map.entrySet()){
     Integer key = t.getKey();
     for (Map.Entry<Character,Integer> e : this.map.getValue().entrySet())
       System.out.println("OuterKey:" + key + " InnerKey: " + e.getKey()+ " VALUE:" +e.getValue());
   }
}

我不能在第二个for中使用getValue((,那么我还能用什么呢?

提前感谢!祝你今天愉快。克里斯。

getValue()Map.Entry的方法,而不是Map

您应该在第二个循环中使用t.getValue().entrySet()而不是this.map.getValue().entrySet()

这会给你内在的地图。

public void print(){
   for(Map.Entry<Integer, HashMap<Character,Integer>> t :this.map.entrySet()){
     Integer key = t.getKey();
     for (Map.Entry<Character,Integer> e : t.getValue().entrySet())
       System.out.println("OuterKey:" + key + " InnerKey: " + e.getKey()+ " VALUE:" +e.getValue());
   }
}

打印整个内容的最简单方法:

System.out.println(map.toString());

是的,就是这样;toString((返回一个字符串。。。包含地图的所有内容;包括其内部地图!

如果你想自己做,那么你可以使用两个循环:

for(Map.Entry<Integer, HashMap<Character,Integer>> innerMap : map.entrySet()) {
  for (Map.Entry<Character, Integer> aMap : innerMap.entrySet) {
    ... now you can call aMap.getKey() and .getValue()
public static void main(String[] args) {
        HashMap<Integer,HashMap<Character,Integer>> map = new HashMap<Integer,HashMap<Character,Integer>>();
        HashMap<Character,Integer> map1 = new HashMap<Character,Integer>();
        map1.put('1', 11);
        HashMap<Character,Integer> map2 = new HashMap<Character,Integer>();
        map2.put('2', 22);
        map.put(111, map1);
        map.put(222, map2);
        for (Integer temp : map.keySet()) {
            for (Character c : map.get(temp).keySet()) {
                System.out.println("key--" + c + "--value--" + map.get(temp).get(c));
            }
        }
    }

希望它能起作用。

最新更新