看看這個小例子現在哈希表和ArrayList
import java.util.ArrayList;
import java.util.HashMap;
public class Foo {
public static void main(String[] args) {
ArrayList<Integer> array = new ArrayList<Integer>();
HashMap<String, ArrayList<Integer>> foo = new HashMap<String,ArrayList<Integer>>();
for (int i = 0; i < 20; i++)
array.add(i);
foo.put("1", array);
// array.clear();
System.out.println(foo.get("1").size());
}
}
,如果使用array.clear()
它會自動刪除與HashMap的內指定鍵關聯ArrayList中的所有值
如何我能阻止這個嗎?
我可以(在HashMap中輸入值之後)執行
array.clear();
和僅刪除的ArrayList<Integer> array
的值的值,的:
在使得方式陣列與該密鑰關聯,不會被刪除裏面的哈希映射
如果你啓動這個程序,它會打印沒有使用array.clear();
,代替
你確定你明白java在各處使用對象的引用嗎?如果在HashMap中存儲對數組的引用,那麼它與本地變量引用的對象是同一個對象。 – Andrey
在你的hashmap聲明中,你提供了對同一個對象的引用,所以很明顯它會從兩個地方被刪除(顯然它不存在於兩個地方只有一個數組存在),你可以在兩個地方使用一個數組。正如@Andrey所說的,請通過java如何使用對象引用來更好地理解它。 – Setu
CiMat,看到我的答案.. – niiraj874u