建网站无锡网站建设主流开发语言
建网站无锡,网站建设主流开发语言,免费搜索引擎入口,做地图特效的网站Java中的WeakHashMap是中高级Java开发人员中非常流行的数据结构。 WeakHashMap类位于java.util包中。 这是一个Map实现#xff0c;其中存储了对其键的弱引用。 当关联密钥丢失其所有活动的强引用和软引用时#xff0c; WeakHashMap中的条目将自动删除。 在本文中#xff0… Java中的WeakHashMap是中高级Java开发人员中非常流行的数据结构。 WeakHashMap类位于java.util包中。 这是一个Map实现其中存储了对其键的弱引用。 当关联密钥丢失其所有活动的强引用和软引用时 WeakHashMap中的条目将自动删除。 在本文中我们将首先讨论Java中的引用类型-软引用弱引用和强引用。 然后我们将了解WeakHashMap 。 Java引用的类型 Java允许具有三种不同类型的引用 1.强引用 在日常Java编程中使用的是强引用 Employee emp new Employee(Jake); 强引用所引用的任何对象均不符合垃圾回收的条件。 2.软参考 在JVM绝对需要内存之前不会对软引用指向的对象进行垃圾回收。 我们可以创建一个java.lang.ref。 SoftReference例如 SoftReferenceEmployee empSoft new SoftReference(new Employee(Jake));3.参考文献少 我们可以使用java.lang.ref.WeakReference类创建WeakReference。 任何丢失所有强引用和软引用的对象都将立即有资格进行垃圾回收 即使我们有一些指向它的弱引用也是如此 Employee jake new Employee(Jake);
Employee jakeOtherStrongRef jake;WeakReferenceEmployee emp new WeakReference(jake);jake null; // object not yet eligible for GC as jakeOtherStrongRef also exists
jakeOtherStrongRef null; //object is now eligible for GC Java WeakHashMap是一个哈希实现它的键包含WeakReference 。 就像HashMap一样 它也支持null键和null值。 我们可以使用可用的构造函数之一创建WeakHashMap WeakHashMap创建一个空的WeakHashMap 其默认容量为16默认负载因子为0.75 WeakHashMapint initialCapacity创建具有给定容量和默认加载因子的空WeakHashMap WeakHashMapint initialCapacityfloat loadFactor使用给定的初始容量和负载因子来实例化WeakHashMap WeakHashMapMap 扩展K ,?扩展V map构造一个新的WeakHashMap 其映射与指定的Map相同。 让我们使用默认构造函数快速实例化WeakHashMap WeakHashMapInteger, String map new WeakHashMap(); WeakHashMap实现Map接口因此继承了其所有方法。 让我们看一下最常用的方法 V putK keyV value在WeakHashMap中插入一个新的键值对。 如果映射已经包含给定键则其值将被替换 V getObject key获取给定键的值。 如果映射不包含键的映射则返回null V removeObject key删除具有给定键的条目并返回关联的值 boolean containsKeyObject key如果地图包含给定键则返回true 否则返回false boolean containsValueObject value检查地图是否包含给定值 int size获取WeakHashMap的大小 boolean isEmpty返回地图是否为空 Set Map.Entry KV entrySet返回地图中包含的映射的Set视图 Set K keySet返回地图中包含的键的Set视图 Collection V values返回包含在映射中的值的Collection视图 让我们尝试以下几种方法 map.put(1, Argon);
map.put(2, Nitrogen);System.out.println(map.containsKey(1)); //true
System.out.println(map.containsKey(3)); //false
System.out.println(map.containsValue(Nitrogen)); //trueString val map.get(2); // Nitrogen
int size map.size(); //2for(Map.EntryInteger, String entry : map.entrySet()) {System.out.println(entry.getKey() : entry.getValue());
} 我们之前讨论过 WeakHashMap与HashMap不同它存储键的弱引用。 现在让我们借助一个示例来理解这个概念。 假设我们有一个Employee类 class Employee {private int id;private String name;//constructors, getters and setterspublic String toString() {return [Employee{id id ,name name }];}
} 并说我们定义了一个WeakHashMap EmployeeInteger 它存储每个Employee的依赖项数量 MapEmployee, Integer weakHashMap new WeakHashMap();Employee ray new Employee(1, Ray);
Employee sierra new Employee(2, Sierra);weakHashMap.put(ray, 3);
weakHashMap.put(sierra, 4);System.out.println(weakHashMap); //{[Employee{id1 ,nameRay}]3, [Employee{id2 ,nameSierra}]4} sierra null;System.gc();System.out.println(weakHashMap); //{[Employee{id1 ,nameRay}]3} 显然我们可以看到现在WeakHashMap不再包含sierra的条目。 换句话说当我们将sierra指向的对象设置为null并有资格进行垃圾回收时它失去了唯一的强引用。 在使用System.gc请求垃圾收集时垃圾收集器从WeakHashMap中删除了该条目。 让我们讨论一下HashMap和WeakHashMap之间的重要区别 哈希图 WeakHashMap 存储的条目对象不符合垃圾回收条件 当WeakHashMap中的条目丢失所有强引用和软引用时该条目将被自动删除 HashMap对其关键对象拥有强大的引用 如果使用WeakHashMap则会存储对键的弱引用 除非我们显式添加或删除条目否则size方法将始终返回相同的值 size方法可能返回较小的值因为GC可能会自动删除一些条目 HashMap实现了Cloneable接口其clone方法返回HashMap的浅表副本 不实现Cloneable 实现可序列化的接口 不支持序列化 结论 在本教程中我们学习了Java中的WeakHashMap 。 WeakHashMap存储对其键对象的弱引用因此一旦键丢失所有常规引用条目可能会自动删除。 成为第一个发表评论的人。 翻译自: https://www.javacodegeeks.com/2019/05/weakhashmap-java.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89367.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!