hashmap里面的hashmap打印出来

By simon at 2018-02-07 • 0人收藏 • 73人看过

我正在试图打印出一个包含A字符作为键和密钥的散列表 该值作为另一个带有Integer和Double的散列表我有这个到目前为止,但 不工作。

HashMap<Character, Map<Integer, Double>> MapInsideOfAMap = calc.MapInAMap(abc);
    for (Entry<Character, Map<Integer, Double>> outer : MapInsideOfAMap.entrySet()) {
        System.out.println("Char: " + outer.getKey() + "\n");
        for (Map.Entry<Character, Map<Integer, Double> inner : MapInsideOfAMap.getValue().entrySet()) {
            System.out.println("int = " + inner.getKey() + ", double = " + inner.getValue());
        }
    }

6 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

假设您的地图如下所示:

Map <Character, Map<Integer, Double>> MapInsideOfAMap = new HashMap();
那么你可以像这样打印你的地图:
for (Entry<Character, Map<Integer, Double>> outer : MapInsideOfAMap.entrySet()) {
    System.out.println("Char: " + outer.getKey() + "\n");
    HashMap<Integer, Double> innermap = MapInsideOfAMap.get(outer.getKey());
    for (Map.Entry<Integer, Double> innerEntry : innermap.entrySet()) {
         System.out.println("int = " + innerEntry.getKey() + ", double = " + innerEntry.getValue());
    }
}

2018-02-07   #2

你的代码应该是这样的,

for (Entry<Character, Map<Integer, Double>> outer : MapInsideOfAMap.entrySet()) {
        System.out.println("Char: " + outer.getKey() + "\n");
        for (Entry<Integer, Double> inner : MapInsideOfAMap.get(outer.getKey()).entrySet()) {
            System.out.println("int = " + inner.getKey() + ", double = " + inner.getValue());
        }
    }
好的,我知道你在做什么,因为你已经有外面的地图了 条目,你不必再使用外部地图引用,你可以直接做 喜欢这个,
for (Entry<Character, Map<Integer, Double>> outer : MapInsideOfAMap.entrySet()) {
        System.out.println("Char: " + outer.getKey() + "\n");

        for (Entry<Integer, Double> inner : outer.getValue().entrySet()) {
            System.out.println("int = " + inner.getKey() + ", double = " + inner.getValue());
        }
    }

2018-02-07   #3

在第二个for循环中,您需要访问您从中获取的作为值的Map 外环。你也需要改变t的类型他在第二个循环中输入。 试试这个代码:

for (Entry<Character, Map<Integer, Double>> outer : MapInsideOfAMap.entrySet()) {
    System.out.println("Key: " + outer.getKey() + "\n");
    for (Entry<Integer, Double> inner : outer.getValue().entrySet()) {
        System.out.println("Key = " + inner.getKey() + ", Value = " + inner.getValue());
    }
}

2018-02-07   #4

如果您只需要查看地图键/值,请使用System.out.println 地图AbstractMap.toString知道如何以一个很好的和可读的方式打印自己。

Map<Character, Map<Integer, Double>> map = new HashMap<>();
map.put('A', new HashMap<>());
map.get('A').put(1, 0.01);
map.put('B', new HashMap<>());
map.get('B').put(2, 0.02);
System.out.println(map);
打印出这个:
{A={1=0.01}, B={2=0.02}}

2018-02-07   #5

但是结构的复杂性可能是多余的。

public static Map<Integer, Double> get(char keyData, Map<Character, Map<Integer, Double>> fromData) {

    for (Map.Entry<Character, Map<Integer, Double>> entry : fromData.entrySet()) {

        Character key = entry.getKey();

        if(key.equals(keyData))
            return entry.getValue();

    }

    return Collections.emptyMap();
}

public static void print(char cha, Map<Character, Map<Integer, Double>> mapInsideOfMap) {
    System.out.println("print: " + get(cha, mapInsideOfMap));
}

2018-02-07   #6

简单地打印出整张地图:

System.out.println(mapInsideOfAMap);
现在,如果你想迭代你的外部和内部的地图,并打印他们的 键/值对可以使用 [Map.forEach](https://docs.oracle.com/javase/9​​/docs/api/java/util/Map.html #的foreach java.util.fufunction.BiConsumer-)方法:
mapInsideOfAMap.forEach((outerKey, outerValue) -> {
    System.out.println("Char: " + outerKey + "\n");
    outerValue.forEach((innerKey, innerValue) -> 
        System.out.println("int = " + innerKey + ", double = " + innerValue));
});

登录后方可回帖

Loading...