前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >猫头鹰的深夜翻译:Java WeakHashMap

猫头鹰的深夜翻译:Java WeakHashMap

作者头像
眯眯眼的猫头鹰
发布2019-03-13 16:48:14
3660
发布2019-03-13 16:48:14
举报

本文简介

  1. WeakHashMap类概览
  2. WeakHashMap类构造器总结
  3. WeakHashMap类构造方法
  4. WeakHasjMap类使用举例

1. WeakHashMap类概览

WeakHashMap是一个实现了Map接口,并且键为weak型的哈希表。WeakHashMap中的条目不再被正常使用时,会被自动删除。它的键值均支持null。这个类类似于HashMap类,也具有初始容量和负载因子这样的效率参数。和绝大多数的集合类一样,这个类不是同步的。需要使用Collections.synchronizedMap方法来进行同步控制。弱引用--如果一个对象只有一个弱引用,那么垃圾回收期可以随时收回该对象的内存。它不需要等到系统内存不足时才回收。通常,它的内存会在下一次垃圾收集器运行时释放。

2. WeakHashMap的构造器

  • WeakHashMap(): 构造一个新的,空的WeakHashMap,初始容量为16,负载因子为0.75
  • WeakHashMap(int initialCapacity): 构造一个新的,空的WeakHashMap, 初始容量为initialCapacity,负载因子为0.75
  • WeakHashMap(int initialCapacity, float loadFactor): 构造一个新的,空的WeakHashMap, 初始容量为initialCapacity,负载因子为loadFactor
  • WeakHashMap(Map<? extends K, ? extends V> m): 利用已有的map构造WeakHashMap

3. WeakHashMap类的方法

clipboard.png
clipboard.png
  • void clear(): 删除所有的条目
  • boolean containsKey(Object key): 如果有该键,返回true
  • boolean containsValue(Object value): 如果有一个或多个value值,返回true
  • Set< Map.Entry<K,V>>entrySet(): 返回键值视图
  • void forEach(BiConsumer<? super K,? super V> action): 对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。
  • V get(Object key): 返回指定键映射到的值,如果此映射不包含键的映射,则返回null。
  • boolean isEmpty(): 如果此映射不包含键 - 值映射,则返回true。

4. WeakHashMap类使用示例

代码语言:javascript
复制
import java.util.Map;
import java.util.Map.Entry;
import java.util.WeakHashMap;
public class 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");
        map.put(key1, new Project(100, "Customer Management System", "Customer Management System"));
        map.put(key2, new Project(200, "Employee Management System", "Employee Management System"));
        key1 = null;
        System.gc();
        for (final Entry<Key, Project> entry : map.entrySet()) {
            System.out.println(entry.getKey().getKey() + "   " + entry.getValue());
        }
    }
}
class Key {
    private String key;
    public Key(final String key) {
        super();
        this.key = key;
    }
    public String getKey() {
        return key;
    }
    public void setKey(final String key) {
        this.key = key;
    }
}

输出:

代码语言:javascript
复制
INACTIVE   [project id : 200, project name : Employee Management System, 
           project desc : Employee Management System ]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文简介
  • 1. WeakHashMap类概览
  • 2. WeakHashMap的构造器
  • 3. WeakHashMap类的方法
  • 4. WeakHashMap类使用示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档