当前位置: 代码迷 >> java >> 是否可以在Arraylist中索引哈希集?
  详细解决方案

是否可以在Arraylist中索引哈希集?

热度:41   发布时间:2023-07-31 10:54:33.0

是否可以在arraylist中索引hashmaps。

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}].

这是预期的行为。

当您以任何集合类型添加对象时,集合将仅保存该对象的引用。 它不会创建新对象并将其打孔。

因此,在您的情况下,您已经创建了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);

您将所有条目放入同一地图,并将其两次添加到列表中。 您需要为每个条目创建一个新的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);
  相关解决方案