【问题标题】:How to Extract a Map object from another Map object Java如何从另一个 Map 对象 Java 中提取 Map 对象
【发布时间】:2016-03-04 13:57:33
【问题描述】:

我有以下数据结构:

Map<String,Map<String,String>>

我想从这个复杂的 Map 对象中提取它的值(它本身是另一个字符串 Map)。我目前正在这样做:

Map<String, Map<String, String>> map = getStructure(data,format);
Map<String,String> newMap = new LinkedHashMap<String, String>();

for(Entry<String, Map<String,String>> entry : map.entrySet()) {
    for (Entry<String, String> value : entry.getValue().entrySet()) {
        newMap.put(value.getKey(),value.getValue());
    }
}

由于外部 foreach 循环,上面的实现给了我一个新的 Map 对象,它具有重复的键值对,它正在迭代。好像我错过了什么。

如何从复杂的 Map 对象中提取内部 Map 对象?

编辑:

解决 AlexWien 的评论

原始数据结构:

原始数据结构背后的原因是为一对 ID(ID1 和 ID2)存储单个值。 ID1 和 ID2 可能不同。所以结构如下:

Map&lt;String,Map&lt;String,String&gt;&gt; ===> &lt;someValue, &lt;ID1,ID2&gt;&gt;

我想要实现的是获取每个 someValue 的 id 对(ID1 和 ID2)的完整列表。所以我可以将它们存储在数据库中以跟踪航空信息。

【问题讨论】:

  • 您要提取具有给定键的特定地图吗?
  • 好问题,我想提取整个地图(包括所有键)
  • @arabian_albert:地图不止一张。有很多内部地图。你想提取哪一张内图?
  • @LouisWasserman 我想要所有这些,所以地图的整个列表
  • 您应该举例说明您想要达到的目标。这是非常令人困惑的公式。

标签: java for-loop dictionary data-structures


【解决方案1】:

有一张地图:

Map<String, Map<String, String>> map

您只需调用 get 即可获得内部地图

String key = ...;  // TODO
Map<String, String> innerMap = map.get(key);

更新您的编辑:
进一步看来,您需要像一对地图这样的东西:

Map<String, Pair<String, String>> mapOfPairs.

不幸的是,java 没有 Pair 类。 所以自己写一个:

public class Pair {
  String id1;
  String id2;
}

并且有一个

Map<String, Pair> mapOfPairs;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 2021-01-26
    • 2020-04-01
    • 2022-01-22
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多