Java中的Hashmap与WeakHashMap

哈希图

null

JAVAutil。HashMap类是一个基于哈希的实现。在HashMap中,我们有一个键和一个值对。 即使对象在hashmap中被指定为键,它也没有任何引用,并且是 如果与HashMap关联,即HashMap优于垃圾收集器,则符合垃圾收集条件。

JAVA

// 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的情况除外,如果将对象指定为不包含任何引用的键,则它可以进行垃圾收集,即使它与WeakHashMap关联。i、 垃圾收集器控制着WeakHashMap。

JAVA

// 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. 克隆法 实施: HashMap实现了可克隆接口。 WeakHashMap不实现可克隆接口,它只实现Map接口。因此,WeakHashMap类中没有clone()方法。

本文由 里沙布·帕特尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享