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+ 次浏览

助力你的 职业

通过完成该课程获得认证

开始
广告
© . All rights reserved.