我有以下数据结构:
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)的完整列表。所以我可以将它们存储在数据库中以跟踪航空信息。
答案 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;