【发布时间】:2013-04-18 05:24:01
【问题描述】:
当我遇到一个我自己无法解决或在网络上找不到的问题时,我一直在使用 HashMaps。
HashMap<String,HashMap<String,String>> m= new HashMap<>();
HashMap<String,String> t = new HashMap<>();
t.put("test1","1");
m.put("h1",t);
t = new HashMap<>();
t.put("test2,"2");
m.put("h2",t);
System.out.println(m);
这给了我{h1={test1=1}, h2={test2=2}}
因此,大 HashMap 包含两个 HashMap 的数据。所以问题是它只是简单地复制了较小的 HashMap 的数据,还是两个“t”HashMap 都保留在 JVM 内存中,而 HashMap m 只是将我链接到它们?
【问题讨论】:
-
#2 就是答案。数据没有被复制,m 只是指向哈希映射的两个实例。 t 没有指向前一个 hashmap 实例的事实不会让它消失,如果其他人指向它 (m)
-
read this 然后阅读更多内容。