2015-07-21 60 views
-6

我在解決如何迭代此結構時遇到問題。如何迭代包含地圖的複雜地圖列表

ArrayList<HashMap<String, HashMap<String, String>>> list 

你能幫我弄清楚如何走完整個結構嗎?

以下是我到目前爲止的內容,但接下來我該去哪裏?我需要一直深入到最深的數據。

for (HashMap<String, String> map : data) 
    for (Entry<String, String> entry : map.entrySet()) 
+0

是否必須是一個'ArrayList'? 'LinkedList'對迭代更有效。 – Dragondraikk

+1

訪問什麼,它取決於什麼/如何使用/訪問數據,還有你到目前爲止嘗試 – depperm

+0

@Dragondraikk我只想讀取所有的data.it也可以鏈接列表。 – thanga

回答

3

這個怎麼樣?

ArrayList<HashMap<String, HashMap<String, String>>> list = new ArrayList<>(); 

    for (HashMap<String, HashMap<String, String>> m : list) { 
     for (Map.Entry<String, HashMap<String, String>> e : m.entrySet()) { 
      String key1 = e.getKey(); 
      for (Map.Entry<String, String> me : e.getValue().entrySet()) { 
       String key2 = me.getKey(); 
       String value = me.getValue(); 
      } 
     } 
    } 

請注意,你真的應該使用對象的接口形式:

List<Map<String, Map<String, String>>> list = new ArrayList<>(); 

    for (Map<String, Map<String, String>> m : list) { 
     // All Maps. 
     for (Map.Entry<String, Map<String, String>> e : m.entrySet()) { 
      // Outer key. 
      String key1 = e.getKey(); 
      for (Map.Entry<String, String> me : e.getValue().entrySet()) { 
       // Inner key. 
       String key2 = me.getKey(); 
       // The String value. 
       String value = me.getValue(); 
      } 
     } 
    } 
+0

謝謝@OldCurmudgeon – thanga