【问题标题】:Getting value from Nested HashMap into another Map从嵌套的 HashMap 中获取值到另一个 Map
【发布时间】:2012-05-15 19:11:55
【问题描述】:

您好,我想存储嵌套 Map 的键和值,如下所示:

Map<ArrayList <String>, Map<String, Integer>> NestedMap = new HashMap<ArrayList<String>, Map<String, Integer>();

进入另一个变量,比如 getKeyFromInsideMap 和 getValueFromInsideMap。因此,对访问感兴趣的是内部 Map String 和 Integer 的值。我如何在代码中做到这一点?

我在论坛中尝试了几个示例,但我不知道语法是什么样的。您能否为此提供一些代码。谢谢!

【问题讨论】:

    标签: java arraylist nested hashmap


    【解决方案1】:

    您从嵌套的 Map 中获取值的方式与从未嵌套的 Map 中获取值的方式相同,您只需应用相同的过程两次:

    //Java7 Diamond Notation
    Map<ArrayList, Map<String, Integer>> nestedMap = new HashMap<>();
    
    //get nested map 
    Map<String, Integer> innerMap = nestedMap.get(some_key_value_string);
    
    //now get the Integer value from the innerMap
    Integer innerMapValue = innerMap.get(some_key_value_string);
    

    此外,如果您正在寻找特定的键,您可以像这样遍历地图:

    Iterator it = map.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println("Key: " + pairs.getKey() + " Val: " + pairs.getValue()));
        it.remove(); // avoids a ConcurrentModificationException
    }
    

    这将遍历单个映射的所有键和值。

    希望这会有所帮助。

    【讨论】:

    • 您好,感谢您的快速回复。我尝试了您的第一个解决方案,即没有 while 循环的解决方案。当我到达 nestedMap.get(some_key_value_string); 部分时它要求一个值。通常我会在那里输入一些东西,但是如果我想获取内部映射中的所有键和值怎么办?循环会是什么样子?我将分配什么变量来替换 some_key_value_string?
    • @dimas 如果您尝试获取地图的所有键和值,而不是特定的,则应遵循第二个示例。只是在nestedMap 中pairs.getValue() 不会返回Map&lt;String, Integer&gt;
    • 酷 tnx,我能够得到它。那么你在 Map.Entry pairs = (Map.Entry)it.next 中所做的就是让 pair 成为一个临时的 Map 来存储内部映射的键值对?
    • Map.Entry 对象存储单个键值对。对于您的nestedMap Map.Entry 包含一个String 和一个Map,对于您的内部映射它包含一个String 和一个Integer
    • 好的,现在我明白发生了什么。感谢您的所有帮助!
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 2020-08-04
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多