有助于区分它们的有关HashMap和WeakHashMap的详细信息如下-
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 }
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 {}