如何迭代像List <map <string,object>&gt; </map <string,object>这样的列表

时间:2011-04-26 07:07:33

标签: java foreach

我有一个返回List<Map<String,Object>>的方法。

如何迭代像List<Map<String,Object>>这样的列表?

7 个答案:

答案 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());
    }
}
  1. 循环浏览地图列表
  2. 处理地图条目

答案 2 :(得分:1)

这应该有效:

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

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

您还可以在for循环中使用iteratorget方法来访问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