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

时间:2015-11-30 20:02:13

标签: java for-loop dictionary data-structures

我有以下数据结构:

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());
    }
}

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

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

修改

解决AlexWien的评论

原始数据结构:

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

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

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

1 个答案:

答案 0 :(得分: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;