2015-07-21 91 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