是否可以在数组列表中索引哈希图。
List<Map<String,String>> list_str=new ArrayList<Map<String,String>>();
Map<String,String> map_str=new HashMap<String,String>();
map_str.put("Name", "rrrrr");
map_str.put("Age", "23");
list_str.add(map_str);
System.out.println(list_str);
map_str.put("Name", "aaaa");
map_str.put("Age", "32");
list_str.add(map_str);
System.out.println(list_str);
对于上述代码,我得到的输出为
[{Age=32,Name=aaaa},{Age=32,Name=aaaa}].
但是,我希望输出为
[{Age=23,Name=rrrr},{Age=32,Name=aaaa}].
答案 0 :(得分:1)
这是预期的行为。
当您添加任何集合类型的对象时,集合将仅保存该对象的引用。它不会创建新对象并将其打孔。
因此,在您的情况下,您已经创建了HashMap
对象,并再次使用了该对象。这就是为什么数据会被覆盖的原因。
也许代码应该像这样:
List<Map<String,String>> list_str=new ArrayList<Map<String,String>>();
Map<String,String> map_str=new HashMap<String,String>();
map_str.put("Name", "rrrrr");
map_str.put("Age", "23");
list_str.add(map_str);
System.out.println(list_str);
map_str = new HashMap<String,String>();
map_str.put("Name", "aaaa");
map_str.put("Age", "32");
list_str.add(map_str);
System.out.println(list_str);
答案 1 :(得分:0)
您要将所有条目放入同一地图,并将其两次添加到列表中。您需要为每个条目创建一个新的HashMap:
List<Map<String,String>> list_str = new ArrayList<Map<String,String>>();
Map<String,String> map_str_1 = new HashMap<String,String>();
map_str_1.put("Name", "rrrrr");
map_str_1.put("Age", "23");
list_str.add(map_str_1);
Map<String,String> map_str_2 = new HashMap<String,String>();
map_str_2.put("Name", "aaaa");
map_str_2.put("Age", "32");
list_str.add(map_str_2);
System.out.println(list_str);