2016-10-04 148 views
-2

我想遍歷散列表列表的散列圖。Java - 如何遍歷散列表列表的散列圖

例如,

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

如何遍歷這個地圖。

請幫我找到解決辦法。

+1

寫一些Java代碼。 –

+0

迭代嵌套結構=嵌套循環 – 4castle

+0

不要。如果你有這樣的數據結構,你有設計問題。 – Raedwald

回答

0

您應該仔細查看一下您的設計,這聽起來像是可以用更簡單的方式構建的東西。考慮將這個集合分解成類。 但是,如果你現在不能改變它(或沒有時間),我會提供一個手。

最簡單的方法可能是向上突破迭代在幾個步驟:在列表

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

讓我們爲您的地圖命名。

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

的不同位。如果你不需要知道價值的關鍵,那麼第二個更好。

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