如何从另一个Map对象Java中提取Map对象



我有以下数据结构:

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<String,Map<String,String>>===><someValue, <ID1,ID2>>

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

拥有地图地图:

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;

最新更新