Java 从映射列表输出键/值对

Java 从映射列表输出键/值对,java,list,map,iterator,output,Java,List,Map,Iterator,Output,我想从列表中输出所有键/值对。我怎样才能做到这一点 我已经尝试了以下方法: public void myFunction (List<Map<String,String>> list){ Iterator <Map<String, String>> iterator = list.iterator(); while (iterator.hasNext()){ for (String key: ((Map<Str

我想从列表>中输出所有键/值对。我怎样才能做到这一点

我已经尝试了以下方法:

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());
        }
    }
}
public void myFunction(列表){
迭代器迭代器=list.Iterator();
while(iterator.hasNext()){
对于(字符串键:((映射)迭代器).keySet()){
System.out.println(key++(Map)迭代器).get(key.toString());
}
}
}
但是我得到了一个java.lang.ClassCastException:java.util.ArrayList$Itr不能转换为java.util.Map异常


我做错了什么?或者我可以做什么呢?

您没有在迭代器上调用
next()
,并检索映射。在while循环的顶部执行此操作一次,然后参考
map

Iterator <Map<String, String>> iterator = list.iterator();
while (iterator.hasNext()){
    Map<String, String> map = iterator.next();

    for (String key: map.keySet()){
        System.out.println(key + " " + map.get(key).toString());
    }
}
Iterator Iterator=list.Iterator();
while(iterator.hasNext()){
Map=iterator.next();
for(字符串键:map.keySet()){
System.out.println(key+“”+map.get(key.toString());
}
}
注意:考虑使用其他答案中的一个代码——因为每个循环都很小。

<代码> list list=null;
    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());
        }
    }
用于(地图m:列表){ 对于(条目en:m.entrySet()){ System.out.println(en.getKey()); System.out.println(en.getValue()); } } 对于列表中的每个映射,循环遍历其条目集中的每个条目。这样,您就不必担心迭代器,因为它是一个简单的foreach循环。

返回一个nota,因此
ClassCastException

你可以按以下步骤进行:

for(Map<String, String> map : list) {
    for(Entry<String, String> e: map.entrySet()) {
        System.out.println("Key=" + e.getKey() + ", Value=" + e.getValue());
    }
}
for(地图:列表){
对于(条目e:map.entrySet()){
System.out.println(“Key=“+e.getKey()+”,Value=“+e.getValue());
}
}

请注意,如果要迭代映射的所有条目,最好使用而不是每次调用
keySet()
并调用
map\get
。您并不总是知道类的
hashcode
equals
是如何实现的。

如果我理解您的问题,您可以使用循环之类的方法

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