首页 > 编程语言 >Java中的WeakHashMap与类示例

Java中的WeakHashMap与类示例

时间:2023-06-15 12:01:06浏览次数:58  
标签:WeakHashMap Java Key 映射 示例 void 条目 key


在本文中,我们将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,其条目将被删除并进行垃圾回收。快乐的编码!

标签:WeakHashMap,Java,Key,映射,示例,void,条目,key
From: https://blog.51cto.com/u_16145034/6486171

相关文章

  • Java正则表达式详解
    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(RegularExpression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。许多语言,包括Perl、PHP、Python、JavaScript......
  • JavaScript内存限制
    JavaScriptmemorylimitJavaScript应用程序可以存储的最大数据量是多少?我猜这是由浏览器处理的,每个浏览器都有其局限性吗?如果没有限制,将创建页面文件吗?如果是这样,那不安全吗? 相关讨论  有一些限制,尽管这些取决于浏览器。例如,Firefox对堆栈空间以及过多的CPU消......
  • 淘宝接口数据采集获得店铺详情api接口获取源代码调用示例展示
    ​ 淘宝店铺详情API接口是阿里巴巴开放平台提供的一种API接口,用于获取指定淘宝店铺的详细信息,如店铺名称、店铺简介、开店时间、主营类目等信息。具体来说,淘宝店铺详情API接口(免费获取调用)的作用包括:1.获取店铺基本信息:可以获取店铺名称、描述、卖家主页、好评率等基本信息,帮......
  • Java_Dom4j_解析xml
    via:http://blog.163.com/kewangwu@126/blog/static/8672847120126261033594/ 1、DOM4J简介DOM4J是dom4j.org出品的一个开源XML解析包。DOM4J应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。Dom:把整个文档作为一个对象。DOM4J最大的特色是使用大量的接口......
  • ajax + java 实现类似网易邮箱邮件地址自动完成功能
    ajax+java实现类似网易邮箱邮件地址自动完成功能2008-04-0218:30********************************************************************源代码下载链接:http://www.javaeye.com/topic/150778***************************************************************......
  • 您必须知道的重要Java关键字
    什么是Java中的关键字?Java关键字是一个保留字,具有与之关联的特殊含义。为便于识别,它们通常以Java格式突出显示。在50个关键字中,有48个正在使用,而有两个不在。让我们更详细地研究一些重要的Java关键字。重要的Java关键字列表摘要: 它用于完成 抽象。它是一种与类和方法相关的非访......
  • java服务器更换jdk版本后报错:javax.net.ssl.SSLHandshakeException: No appropriate p
    java,服务器更换jdk版本后报错:Causedby:javax.net.ssl.SSLHandshakeException:Noappropriateprotocol(protocolisdisabledorciphersuitesareinappropriate)然后数据库出现:###Errorqueryingdatabase.Cause:java.lang.reflect.UndeclaredThrowableExc......
  • javascript现代编程系列教程之七——字符集(七)
    Unicode:Unicode是一个字符集(Charset),包含了世界上所有的字符。每个字符在Unicode中都有其唯一对应的数字编号,这就是我们常说的Unicode码。UTF-8:UTF-8是Unicode的实现方式之一。UTF-8使用一至四个字节为每个字符编码,英文字符通常使用一个字节,西欧其他语言的部分字符使用......
  • Oracle动态建表示例
    declarev_sqlvarchar2(5000);v_iscountnumber;begin--检查表是否存在selectcount(1)intov_iscountfromuser_tableswheretable_name=upper('${tableName}');--不存在执行DDL语句ifv_iscount=0then--执行建表语句v_......
  • 用JavaScript绘制树状图(具有分支合并功能)的一种方法(其一)
    需求分析在很多模拟经营游戏中,科技树是一项重要的内容,其为玩家提供了各项技术与其前后置科技间的拓扑关系。这些科技树在表现形式上和普通树状图很相似,但由于其频繁的分支合并,为科技树的绘制带来困难。因此,我们需要一种简单的方法来绘制科技树。比如,当用户输入:<!--为了降低用户......