我只是运行以下代码,结果令我感到惊讶。有人可以解释一下这里发生了什么吗? 我的问题是..当我使用对象设置器将值设置为原始arraylist的新副本时,为什么原始arrayList中的对象值也被更改了?
请让我知道我在这里做错什么了。
public class TestHashMap {
public static void main(String[] args) {
HashMap<String,ArrayList<ResultData>> hmData = new HashMap<String,ArrayList<ResultData>>();
ArrayList<ResultData> arrData = new ArrayList<ResultData>();
for (int i = 0; i < 10; i++) {
ResultData rData = new ResultData();
rData.setDy(i + 1);
arrData.add(rData);
}
hmData.put("test",arrData);
System.out.println("Before >>>> "+hmData.get("test").get(1).getDy());
ArrayList<ResultData> newList = new ArrayList<ResultData>();
newList = hmData.get("test");
ResultData rNew = newList.get(1);
rNew.setDy(1234566);
System.out.println("##### >>>>> "+arrData.get(1).getDy());
System.out.println("After >>>> "+hmData.get("test").get(1).getDy());
}}