继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java中的WeakHashMap与类示例

holdtom
关注TA
已关注
手记 1703
粉丝 240
获赞 991


在本文中,我们将WeakHashMap 通过示例从java.util包中学习  类。

我们将学到什么?

WeakHashMap 课程概述

WeakHashMap 类构造方法摘要

WeakHashMap 类构造方法

WeakHashMap 类示例

1. WeakHashMap类概述

WeakHashMap 是一个基于Hash表的Map接口实现的弱键。当其密钥不再正常使用时,将自动删除该条目中的条目。支持空值和空值。该类具有与HashMap类相似的性能特征,并具有与初始容量和负载因子相同的效率参数。与大多数集合类一样,此类不同步。可以使用以下来构造   同步  WeakHashMap WeakHashMap Collections.synchronizedMap 方法。弱引用 - 如果对象的唯一引用是弱引用,则垃圾收集器可以随时回收对象的内存。它不必等到系统内存不足。通常,它将在下次垃圾收集器运行时释放。此类是Java Collections Framework的成员。

2. WeakHashMap类构造函数

WeakHashMap() - WeakHashMap 使用默认初始容量(16)和加载因子(0.75)构造一个新的空  。

WeakHashMap(int initialCapacity) - WeakHashMap 使用给定的初始容量和默认加载因子(0.75)构造一个新的空。

 WeakHashMap(int initialCapacity, float loadFactor) - WeakHashMap 使用给定的初始容量和给定的加载因子构造一个新的空  。

WeakHashMap(Map< ?extends K,? extends V> m)  - 构造一个WeakHashMap 与指定映射具有相同映射的new 。

3. WeakHashMap类方法

 void clear() -  从此映射中删除所有映射。

boolean containsKey(Object key) - 如果此映射包含指定键的映射,则返回true。

 boolean containsValue(Object value) - 如果此映射将一个或多个键映射到指定值,则返回true。

 Set<  Map.Entry<K,V>>entrySet() -返回此映射中包含的映射的Set视图。

void forEach(BiConsumer<? super K,? super V> action)  - 对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。

 V get(Object key) -  返回指定键映射到的值,如果此映射不包含键的映射,则返回null。

boolean isEmpty() - 如果此映射不包含键 - 值映射,则返回true。

 Set keySet() - 返回此映射中包含的键的Set视图。

V put(K key, V value)  -  将指定值与此映射中的指定键相关联。

 void putAll(Map<? extends K,? extends V> m) -将指定映射中的所有映射复制到此映射。

 V remove(Object key) - 如果存在,则从此弱哈希映射中删除键的映射。

 void replaceAll(BiFunction<? super K,? super V,? extends V>function)  - 将每个条目的值替换为在该条目上调用给定函数的结果,直到所有条目都已处理或函数抛出异常。

 int size() - 返回此映射中键 - 值映射的数量。

Collection values() -  返回此映射中包含的值的Collection视图。

4. WeakHashMap类示例

如我们所知,当一个条目中的条目不再被外部引用并且密钥到期时,它将被自动删除。在这个例子中,我们创建了两个键 - key1和key2 - 值为“ACTIVE”和“INACTIVE”。现在,使key1为null并运行该程序。输出应该是单个条目: WeakHashMap

导入 java。util。地图 ;

导入 java。util。地图。进入 ;

导入 java。util。WeakHashMap ;

公共 类 WeakHashMapExample {

    public  static  void  main(final  String [] args){

        final  Map < Key,Project >  map  =  new  WeakHashMap <>();

        Key  key1  =  new  Key(“ACTIVE”);

        final  key  key2  =  new  Key(“INACTIVE”);

        地图。put(key1,new  Project(100,“Customer Management System”,“Customer Management System”));

        地图。put(key2,new  Project(200,“Employee Management System”,“Employee Management System”));

        key1  =  null ;

        系统。gc();

        为(最终 条目< 键,项目>  条目:地图。的entrySet()){

            系统。出。的println(条目。信息getKey()。信息getKey()+  “”  +  条目。的getValue());

        }

    }

}

class  Key {

    私有 String  键 ;

    public  Key(final  String  key){

        super();

        这个。key  =  key ;

    }

    public  String  getKey(){

        返回 键 ;

    }

    public  void  setKey(final  String  key){

        这个。key  =  key ;

    }

}

输出:

INACTIVE    [ 项目 编号:200,项目 名称:员工 管理 系统,

           项目 说明:员工 管理 系统 ]

请注意,key1为null,其条目将被删除并进行垃圾回收。快乐的编码!

©著作权归作者所有:来自51CTO博客作者萤火的萤的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP