class Role {
private String rolepro;
private String name;
}
class RoleList {
private HashMap<String,Role> map;
}
ArrayList<RoleList> list=new ArrayList<>();
HashMap<String,Role> templateMap=new HashMap<>();
Role obj = new Role();
obj.setRolepro("ADC");
obj.setName("射手");
templateMap.put("ADC",obj);
Role obj2 = new Role();
obj2.setRolepro("BP");
obj2.setName("法师");
templateMap.put("BP",obj2);
Role obj3 = new Role();
obj3.setRolepro("QC");
obj3.setName("打野");
templateMap.put("QC",obj3);
//traverse
for (int i = 0; i < 3; i++) {
HashMap<String, Role> map = new HashMap<>();
map.putAll(templateMap);
map.get("ADC").setName("射手"+i);
map.get("BP").setName("法师"+i);
map.get("QC").setName("打野"+i);
RoleList listObj = new RoleList();
listObj.setMap(map);
list.add(listObj);
}
System.out.println(list);
System.out.println(list.size());
不明白的地方时为什么添加的三个对象属性信息都是相同吧?
listObj.setMap(map);
对象设置属性,每次只会保存最后一个啊.就好比说 student.setName();可以多次设置值,但是只会保存最后一次.可以理解为给这个学生设置姓名,可以叫他小白,想了想不好还是叫小红好,所以最后这个学生叫小红.这样将明白吗?
如有帮助,欢迎采纳!
实际上你就创建了三个Role对象,循环中对map的处理都是对这三个对象的处理,map中记录的是这三个对象的引用