从地图列表中输出键/值对

时间:2014-06-23 14:46:21

标签: java list map iterator output

我想输出List<中的所有键/值对。地图<字符串,字符串>>。我怎么能做到这一点?

我已经尝试了以下内容:

public void myFunction (List<Map<String,String>> list){
    Iterator <Map<String, String>> iterator = list.iterator();
    while (iterator.hasNext()){
        for (String key: ((Map<String, String>) iterator).keySet()){
            System.out.println(key + " " + ((Map<String, String>) iterator).get(key).toString());
        }
    }
}

但是我得到了一个java.lang.ClassCastException:java.util.ArrayList $ Itr无法转换为java.util.Map异常。

我做错了什么?或者我该怎么办?

2 个答案:

答案 0 :(得分:1)

    List<Map<String,String>> list = null;

    for(Map<String,String> m : list){
        for(Entry<String, String> en : m.entrySet()){
            System.out.println(en.getKey());
            System.out.println(en.getValue());
        }
    }

对于列表中的每个映射,循环遍历其条目集中的每个条目。这样您就不必担心迭代器,因为它是一个简单的foreach循环。

答案 1 :(得分:0)

如果我理解了您的问题,您可以使用for-each循环,keySet()就像这样,

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String,String> testMap = new HashMap<String, String>();
testMap.put("Hello", "World");
testMap.put("Goodbye", "World");

list.add(testMap);
for (Map<String, String> map : list) {
    for (String key : map.keySet()) {
        System.out.printf("%s = %s\n", key, map.get(key));
    }
}

输出

Goodbye = World
Hello = World