我想迭代一个hashmap列表的hashmap。
例如,
HashMap <String, List <HashMap<String, String> > >
如何迭代此地图。
请帮我找一个解决方案。
答案 0 :(得分:0)
让我们为您的地图命名。
statusData.msgStart = 0x02;
statusData.msgLen = 0x2d;
statusData.msgId = 0xb0;
statusData.dataValidity = 0xfff;
statusData.clusterId = 0;
statusData.lumId = 0;
statusData.msgStop = 0x03;
另一种方法是通过集合使用嵌套循环:
HashMap<String, List<HashMap<String, String>>> map; //I'll assume it is initialized and filled with something.
for (String key : map.keySet()) {
for (HashMap<String, String> map2 : map.get(key)) {
for (String key2 : map2.keySet()) {
//do something
}
}
}
有点不同。如果您不需要知道值的键,则第二个更好。
答案 1 :(得分:0)
你应该看看你的设计,这听起来像是一种可以用更简单的方式构建的东西。考虑将这个集合分成几类。 但是,万一你现在无法改变(或没有时间),我会提供帮助。
最简单的方法可能是在几个步骤中打破迭代:
以下是基本代码:
for (List<HashMap<String, String>> list : map.values()) {
for (HashMap<String, String> map2 : list) {
for (String veryInnerValue : map2.values()) {
//do something
}
}
}
答案 2 :(得分:0)
如果您需要知道每张地图的关键字和值:
Map<String, List<HashMap<String, String>>> myMap = new HashMap<String, List<HashMap<String, String>>>();
// loop for first map
for (Entry<String, List<HashMap<String, String>>> myMapEntry : myMap.entrySet()) {
System.out.println("myMap entry key" + myMapEntry.getKey() + ", key ");
// loop for list (value of entry)
for (HashMap<String, String> valueOfList : myMapEntry.getValue()) {
// loop for second map
for (Entry<String, String> entryOfMapOfList : valueOfList.entrySet()) {
System.out.println("key " + entryOfMapOfList.getKey() + " value " + entryOfMapOfList.getValue());
}
}
}