Java Hashmap与WeakHashMap的比较

Java Hashmap与WeakHashMap的比较

HashMap

Java.util.HashMap类是一个基于Hashing的实现。在HashMap中,我们有一个键和一个值对。

即使对象在hashmap中被指定为键,它也没有任何引用,如果它与HashMap相关联,它就 没有 资格进行垃圾收集,即HashMap支配着垃圾收集器。

// Java program to illustrate
// Hashmap
import java.util.*;
class HashMapDemo
{
    public static void main(String args[])throws Exception
    {
        HashMap m = new HashMap();
        Demo d = new Demo();
         
        // puts an entry into HashMap
        m.put(d," Hi ");
         
        System.out.println(m);
        d = null;
         
        // garbage collector is called
        System.gc();
         
        //thread sleeps for 4 sec
        Thread.sleep(4000);
         
        System.out.println(m);
        }
    }
    class Demo
    {
        public String toString()
        {
            return "demo";
        }
         
        // finalize method
        public void finalize()
        {
            System.out.println("Finalize method is called");
        }
}

输出:

{demo=Hi}
{demo=Hi}

WeakHashMap

WeakHashMap是Map接口的一个实现。WeakHashMap与HashMap几乎相同,只是在WeakHashMap中,如果被指定为key的对象不包含任何引用,那么即使它与WeakHashMap相关联,它也有资格被垃圾收集,即垃圾收集器对WeakHashMap占主导地位。

// Java program to illustrate
// WeakHashmap
import java.util.*;
class WeakHashMapDemo
{
    public static void main(String args[])throws Exception
    {
        WeakHashMap m = new WeakHashMap();
        Demo d = new Demo();
         
        // puts an entry into WeakHashMap
        m.put(d," Hi ");
        System.out.println(m);
         
        d = null;
         
        // garbage collector is called
        System.gc();
         
        // thread sleeps for 4 sec
        Thread.sleep(4000); .
         
        System.out.println(m);
    }
}
 
class Demo
{
    public String toString()
    {
        return "demo";
    }
     
    // finalize method
    public void finalize()
    {
        System.out.println("finalize method is called");
    }
}

输出:

{demo = Hi}
finalize method is called
{ }

Hashmap和WeakHashmap之间还有一些重要的区别

  1. 强引用与弱引用 :弱引用对象不是引用对象的默认类型/类别,在使用它们时应该明确指定。这种类型的引用在WeakHashMap中被用来引用条目对象。
    强引用。这是引用对象的默认类型/类别。任何具有有效强引用的对象都不符合垃圾回收的条件。在HashMap中,关键对象有强引用。
  2. 垃圾收集器的作用 :垃圾收集:在HashMap中,条目对象(条目对象存储键值对)没有资格进行垃圾收集,即Hashmap比垃圾收集器更有优势。
    在WeakHashmap中,当一个键被丢弃时,它的条目会自动从地图中删除,换句话说,垃圾收集。
  3. Clone方法 的实现: HashMap实现了Cloneable接口。
    WeakHashMap没有实现Cloneable接口,它只实现了Map接口。因此,WeakHashMap类中没有clone()方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程