0

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

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

我进行了很多搜索,但找不到打印整数的方法,因为当我在其上使用 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());
   }
}

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

提前致谢 !祝你今天过得愉快。克里斯。

4

3 回答 3

6

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());
   }
}
于 2016-10-31T09:12:50.183 回答
0

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

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()
于 2016-10-31T09:12:34.843 回答
0
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));
            }
        }
    }

希望它有效。

于 2016-10-31T09:22:10.340 回答