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之间的一些更重要的区别:
- 强引用与弱引用 :弱引用对象不是引用对象的默认类型/类别,应在使用它们时显式指定它们。这种类型的引用在WeakHashMap中用于引用条目对象。 强引用:这是引用对象的默认类型/类。任何具有活动强引用的对象都不符合垃圾收集的条件。在HashMap中,关键对象具有强引用。
- 垃圾收集器的角色: 垃圾收集:在HashMap中,条目对象(条目对象存储键值对)不符合垃圾收集的条件,即HashMap优于垃圾收集器。 在WeakHashmap中,当密钥被丢弃时,它的条目会自动从地图中删除,换句话说,垃圾会被收集。
- 克隆法 实施: HashMap实现了可克隆接口。 WeakHashMap不实现可克隆接口,它只实现Map接口。因此,WeakHashMap类中没有clone()方法。
本文由 里沙布·帕特尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END