Java - 如何遍历散列表列表的散列图

问题描述:

我想遍历散列表列表的散列图。Java - 如何遍历散列表列表的散列图

例如,

HashMap <String, List <HashMap<String, String> > >

如何遍历这个地图。

请帮我找到解决办法。

+1

写一些Java代码。 –

+0

迭代嵌套结构=嵌套循环 – 4castle

+0

不要。如果你有这样的数据结构,你有设计问题。 – Raedwald

您应该仔细查看一下您的设计,这听起来像是可以用更简单的方式构建的东西。考虑将这个集合分解成类。 但是,如果你现在不能改变它(或没有时间),我会提供一个手。

最简单的方法可能是向上突破迭代在几个步骤:在列表

  1. 迭代内包含HashMap
  2. 迭代
  3. 遍历在内部包含HashMap的内容

以下是基本代码:

for(List<HashMap<String, String>> list : outer.values()) { 
    for(HashMap<String, String> map : list) { 
     for(String value : map.values()) { 
      //Do something 
     } 
    } 
} 

让我们为您的地图命名。

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 
     } 
    } 
} 

另一种方法是通过集合使用嵌套循环:

for (List<HashMap<String, String>> list : map.values()) { 
    for (HashMap<String, String> map2 : list) { 
     for (String veryInnerValue : map2.values()) { 
      //do something 
     } 
    } 
} 

的不同位。如果你不需要知道价值的关键,那么第二个更好。

如果您需要知道每个地图键和值:

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