Java 中的 HashMap 與 WeakHashMap
有關 HashMap 和 WeakHashMap 的詳細資訊有助於區分它們,如下所示——
Java 中的 HashMap
HashMap 中有鍵值對,即與值相關聯的鍵,且鍵是按任意順序排列的。指定為鍵的 HashMap 物件沒有資格進行垃圾回收。這意味著 HashMap 可以控制垃圾回收器。
演示這一點的程式如下——
示例
import java.util.*; class A { public String toString() { return "A "; } public void finalize() { System.out.println("Finalize method"); } } public class Demo { public static void main(String args[])throws Exception { HashMap hMap = new HashMap(); A obj = new A(); hMap.put(obj, " Apple "); System.out.println(hMap); obj = null; System.gc(); Thread.sleep(5000); System.out.println(hMap); } }
以上程式的輸出如下——
輸出
{A = Apple } {A = Apple }
Java 中的 WeakHashMap
WeakHashMap 中有鍵值對,即它與 Java 中的 HashMap 非常類似。不同之處在於,指定為鍵的 WeakHashMap 物件仍然有資格進行垃圾回收。這意味著垃圾回收器可以控制 WeakHashMap。
演示這一點的程式如下——
示例
import java.util.*; class A { public String toString() { return "A "; } public void finalize() { System.out.println("Finalize method"); } } public class Demo { public static void main(String args[])throws Exception { WeakHashMap whMap = new WeakHashMap(); A obj = new A(); whMap.put(obj, " Apple "); System.out.println(whMap); obj = null; System.gc(); Thread.sleep(5000); System.out.println(whMap); } }
以上程式的輸出如下——
輸出
{A = Apple } Finalize method {}
廣告