我无法在java中将数据插入到列表中

时间:2017-02-04 03:10:11

标签: java list dictionary arraylist hashmap

这是我的代码。我正在将地图插入列表。但是当我直接将地图添加到表中时。它显示错误。

import java.util.*;
class mapIn{
   public static void main(String... a){
List<Map<Integer, String>> mapList = new ArrayList<Map<Integer,String>>();
mapList.add(new HashMap<Integer,String>().put(1,"Ram"));
mapList.add(new HashMap<Integer,String>().put(2,"Shyam"));
mapList.add(new HashMap<Integer,String>().put(3,"Shyam"));
for(Map m:mapList){
        // for(Map.Entry e:m.entrySet()){
        //  System.out.println(e.getKey()+" "+e.getValue());
        // }
       Set set=m.entrySet();//Converting to Set so that we can traverse  
    Iterator itr=set.iterator();  
            while(itr.hasNext()){  
        //Converting to Map.Entry so that we can get key and value separately  
        Map.Entry entry=(Map.Entry)itr.next();  
        System.out.println(entry.getKey()+" "+entry.getValue());  
    } 
    }
}
}

3 个答案:

答案 0 :(得分:1)

aibreania的答案是更好的方法,但如果你想把它保持在一行,你可以使用:

mapList.add(new HashMap<Integer,String>(){{ put(1,"Ram"); }});
mapList.add(new HashMap<Integer,String>(){{ put(2,"Shyam"); }});
mapList.add(new HashMap<Integer,String>(){{ put(3,"Shyam"); }});

答案 1 :(得分:0)

请执行初始化hashMap并将(key,value)分别放入地图的步骤。我重写了代码的第一部分:

List<Map<Integer, String>> mapList = new ArrayList<>();
for(int i = 0; i < 3; i++) mapList.add(new HashMap<Integer, String>());
mapList.get(0).put(1, "Ram");
mapList.get(1).put(2, "Shyam");
mapList.get(2).put(3, "Shyam");

我不知道你的代码是什么,但是使用ArrayList来存储3个不同的hashMap并不是很有效。如果您可以提供更多信息,我们可以进一步改进代码。 希望能帮助到你。 :d

答案 2 :(得分:0)

put中的HashMap方法返回String,而不是列表中基础对象的类型(Map<Integer, String>)。这就是你得到这个错误的原因。

您也可以通过以下方式执行此操作:

mapList.add(Collections.singletonMap(1, "Ram"));
mapList.add(Collections.singletonMap(2, "Shyam"));
mapList.add(Collections.singletonMap(3, "Shyam"));