如何迭代包含Map的List并获取该映射的键和值

时间:2017-11-15 11:24:37

标签: java list dictionary

我有一个list,其中包含类类型的地图。我想迭代list并获取内部地图的keyvalues

以下是List

quotationList =  quotationService.searchByIdList(accountId, Account.class);

它包含一个索引,即0索引,它包含一个映射。我需要获得该地图的关键和值。

我的尝试:

for (int i = 0; i < quotationList.size(); i++) {
            Map myMap = (Map) quotationList.get(i);
            System.out.println("Data For Map" + i);
            for (Entry<String, Object> entrySet : ((Map<String, Object>) myMap).entrySet()) {
                System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());
            }
        }

3 个答案:

答案 0 :(得分:2)

获取列表中的第一项:

Map<MyKey, MyValue> myMap = quotationList.get(0);

获取地图的值:

myMap.entrySet();

下一步是循环该entrySet:

    for (Entry<MyKey, MyValue> entry : myMap.entrySet()) {
        MyKey key = entry.getKey();
        MyValue value = entry.getValue();
    }

答案 1 :(得分:0)

Java 8:如果你的地图是Map<String, String>那么

quotationList.forEach(item -> item.entrySet().forEach(entry -> {
        String key = entry.getKey();
        String value = entry.getValue();
    }));

答案 2 :(得分:0)

如果列表包含元素,那么您的代码应该打印地图的内容。

以下是您的代码在列表中有一个地图元素,它正在打印地图的内容:

列表&gt; quotationList = new ArrayList&gt;();

    Map<String, Object> map= new HashMap<String, Object>();
    map.put("key1", "value1");

    quotationList.add(map);

    for (int i = 0; i < quotationList.size(); i++) {
        Map myMap = (Map) quotationList.get(i);
        System.out.println("Data For Map" + i);
        for (Entry<String, Object> entrySet : ((Map<String, Object>) myMap).entrySet()) {
            System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());
        }
    }

它将产生输出:

Map0的数据 Key = key1,Value = value1