我有一个返回List<Map<String,Object>>
的方法。
如何迭代像List<Map<String,Object>>
这样的列表?
答案 0 :(得分:21)
听起来你正在寻找这样的东西:
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();
}
}
答案 1 :(得分: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());
}
}
答案 2 :(得分:1)
这应该有效:
List<Map<String, Object>> list = ...
for (Map<String, Object> map : list)
{
...
}
答案 3 :(得分:1)
使用java 1.8(8),您可以重写它:
list.forEach(item ->
item.forEach((k, v) -> System.out.println(k + ": " + (String)v)
);
答案 4 :(得分: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());
}
答案 5 :(得分:1)
我正在向您发布一个List<Map<String,Object>>
的简单示例。
public static void main(String[] args){
Map<String,Object> map1 = new HashMap<>();
map1.put("Map1 Key1", (Object) "Map1 value1");
map1.put("Map1 Key2", (Object) "Map1 value2");
Map<String,Object> map2 = new HashMap<>();
map2.put("Map2 Key1", (Object) "Map2 value1");
map2.put("Map2 Key2", (Object) "Map2 value2");
List<Map<String,Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
list.stream().forEach(mapsData->{
mapsData.entrySet().forEach(mapData->{
System.out.println("Key:"+mapData.getKey()+ " Value:"+mapData.getValue());
});
});
}
答案 6 :(得分:0)
这是一种以迭代方式遍历地图列表作为起点的简便方法。我的列表中有一个Map对象,里面有3个值
List<Map<String, Object>>
以相当简短的方式使用Java的函数式编程。这样做的目的是提取列表中存储的所有地图并打印出来。我也可以收集值等。
answerListOfMaps.stream().map(map -> map.entrySet())
.forEach(System.out::println );
Eclipse IDE控制台中的输出看起来像这样:
[isAllowed=true, isValid=true, cardNumber=672xxxxxxxxxxx]
x表示混淆
备用方式:
answerListOfMaps.stream().flatMap(map -> map.entrySet().stream())
.forEach( entry -> System.out.println(entry.getKey() + ":" + entry.getValue()) );
控制台:
isAllowed:true
isValid:true
cardNumber:672xxxxxxxxxxx