HashMap<Integer, ArrayList<Integer>> map = new HashMap<Integer, ArrayList<Integer>>();
ArrayList<Integer> al = new ArrayList<Integer>();//arraylist as value
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 5; i++) {
al.add(i + j);
}
System.out.println(al);
System.out.println(j);//key value
map.put(j, al);
System.out.println(map);
al.clear();
}
爲什麼最後的值arraylist會覆蓋所有鍵上?如何避免過度寫作?使用put來存儲新的鍵值對時,現有鍵的HashMap值將被覆蓋。如何預防它?
al.clear()不起作用? – cooltoad 2013-05-13 12:56:10
不。它清除數組,但是您一遍又一遍地使用相同的數組。使用「put」可以保存數組列表引用,而不是副本,因此在放置數組後實際更改地圖值時更改數組列表。 – BobTheBuilder 2013-05-13 12:57:18
哦好!感謝您解決疑問..現在我的代碼工作正常。 – cooltoad 2013-05-13 13:07:48