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

更新日期: 30-Jul-2019

1000+ 次瀏覽

助力你的 職業

透過完成該課程獲得認證

開始
廣告