ITPub博客

首页 > IT基础架构 > 服务器/存储 > Java中的WeakHashMap与类示例

Java中的WeakHashMap与类示例

原创 服务器/存储 作者:Tybyq 时间:2018-12-07 17:24:16 0 删除 编辑

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

我们将学到什么?

  1. WeakHashMap  课程概述

  2. WeakHashMap   类构造方法摘要

  3. WeakHashMap   类构造方法

  4. 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,其条目将被删除并进行垃圾回收。 快乐的编码!


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557424/viewspace-2284562/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 水平缩放的原因
请登录后发表评论 登录
全部评论

注册时间:2018-10-31

  • 博文量
    206
  • 访问量
    159904