2011-04-26 50 views
5

我有一个方法返回List<Map<String,Object>>如何迭代列表<Map <String,Object >>

如何迭代一个列表,如List<Map<String,Object>>

+1

http://download.oracle.com/javase/tutorial/java/nutsandbolts/for.html – 2011-04-26 07:10:12

+0

您能更具体吗? – 2011-04-26 07:11:32

+0

如果您有选择,尽量避免使用过于复杂的嵌套收集数据结构,例如创建一个新类。如果另一位程序员遇到你的List >,他可能需要深入研究你的代码,以确定它是否包含完整的代码。通过课程,您可以通过命名和文档来明确您的意图。 – 2011-04-26 07:54:38

回答

1

这应该工作:

List<Map<String, Object>> list = ... 

for (Map<String, Object> map : list) 
{ 
    ... 
} 

您还可以使用内的一个iteratorget方法循环,​​在列表中访问的元素。

+0

我想你的意思是在你的代码的第一行 – fvu 2011-04-26 07:14:26

+0

列表确实。感谢您指出这一点 – npinti 2011-04-26 07:18:05

6
List<Map<String, Object>> list = getMyMap();  
for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
} 
  1. 遍历的地图列表
  2. 句柄映射条目
+0

您有一些错别字。你正在分配map'两次,列表中的值应该是'Map '。 – WhiteFang34 2011-04-26 07:19:24

+0

@ WhiteFang34:Thx,编辑。 – timbooo 2011-04-26 07:21:05

17

这听起来像你正在寻找的东西是这样的:

List<Map<String, Object>> list; // this is what you have already 

for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     String key = entry.getKey(); 
     Object value = entry.getValue(); 
    } 
} 
0

与Java 1.8(8 )你可以重写它:

list.forEach(item -> 
       item.forEach((k, v) -> System.out.println(k + ": " + (String)v) 
    ); 
1
Map<String, String> map = new HashMap<>(); 
    map.put("First", "1"); 
    map.put("Second", "2"); 
    map.put("third", "3"); 
    map.put("four", "4"); 

    // here is the logic 
    for (Map.Entry<String, String> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
相关问题