这是我的代码。我正在将地图插入列表。但是当我直接将地图添加到表中时。它显示错误。
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());
}
}
}
}
答案 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"));