import java.util.HashMap;
import java.util.Map;
public class Test1 {
public static void main(String[] args) {
Map map = new HashMap();
Map ma = map;
for (int i = 0; i < 3; i++) {
Map<String, String> map2 = new HashMap<String, String>();
map2.put("sss", "呵呵");
ma.put(i, map2);
ma = map2;
}
System.out.println(map);
System.out.println(ma);
}
}
上面的代碼中 沒有直接操作map 但是結束後map 得到一個鏈表值
根據下面的回答想清楚了 最近頭有點暈暈的 ma 最開始確實是和map是同一個對象 但是在循環中不停的在改變,每次循環結束後都指向了map2 ,每次循環中map2都是一個新對象,第一次循環中在ma中put進去了一個map,但是在第二次循環的時候 ma就是最先被put進去的map2,所以map的值在不停的改變,得到最後的鏈表,謝謝下面的各位的回復
Map 創建時,JVM會在Heap區去做New操作,實例名稱就是一個指針指向創建好的Map對象內存地址,一開始你讓一個名為map的“指針”(實際上Java裡面不講指針這個概念,這裡只是一種比喻)指向這個Map,後面你又定義了一個名為ma的“指針”指向同樣的Map對象,所以它們倆是一樣的內容,因此當你對ma進行put後,map內容也一樣會變,因為根本就是同一個對象