2011-04-26 99 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()); 
    } 
相關問題