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
{}