В моем коде у меня есть ArrayList contentChecklist , в котором хранятся объекты HashMap.После добавления всех объектов HashMap в список, и если я получу последний объект HashMap из списка и сохраню его в новом объекте HashMap ( CheckListMaptemp ) и используйте CheckListMaptemp.put("place", "somePlace");
.Он изменяет оригинальный объект HashMap, присутствующий в списке.
public static void main(String[] args) {
List<HashMap> contentChecklist = new ArrayList<>();
Map<String,String> checklIstMap1= new HashMap<>();
checklIstMap1.put("name", "name1");
checklIstMap1.put("uuid", "001");
contentChecklist.add(checklIstMap1);
Map<String,String> checklIstMap2= new HashMap<>();
checklIstMap2.put("name", "name2");
checklIstMap2.put("uuid", "002");
contentChecklist.add(checklIstMap2);
Map<String,String> CheckListMaptemp= (Map<String, String>) contentChecklist.get(contentChecklist.size()-1);
CheckListMaptemp.put("place", "somePlace");
for (Iterator iterator = contentChecklist.iterator(); iterator.hasNext();) {
Map object = (Map) iterator.next();
String val = (String) object.get("place");
System.out.println(val);
}
}
Вывод:
null
somePlace
Я знаю, что это правильное поведение, но ястремится узнать, как изменяется содержимое contentChecklist , когда мы вызываем CheckListMaptemp.put("place", "somePlace");
для CheckListMaptemp , даже если оба они разные объекты.