前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Map之computeIfAbsent

Map之computeIfAbsent

作者头像
九转成圣
发布2024-04-10 17:16:59
780
发布2024-04-10 17:16:59
举报
文章被收录于专栏:csdncsdn

Map之computeIfAbsent

Absent /??bs?nt , ?b?sent/ ab相反s存在ent…的

从map中获取key对应的value,如果value不存在就用提供的Function创建一个新的value,然后存入map,最后返回

优化前

代码语言:javascript
复制
Map<String, Set<Pet>> statistics = new HashMap<>();
Set<Pet> pets = statistics.get(threadName);
if (pets == null) {
    pets = new HashSet<>();
}

优化后

代码语言:javascript
复制
// 根据threadName获取pets,如果pets==null,则创建一个HashSet,然后将新建的HashSet存入map,最后返回新建的HashSet
Map<String, Set<Pet>> statistics = new HashMap<>();
Set<Pet> pets = statistics.computeIfAbsent(threadName, k -> new HashSet<>());

源码

代码语言:javascript
复制
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
    Objects.requireNonNull(mappingFunction);
    V v;
    // 如果v有值,则直接返回v,如果v不存在,就创建新的v,并将新的v存入map,然后返回新v
    if ((v = get(key)) == null) {
        V newValue;
        if ((newValue = mappingFunction.apply(key)) != null) {
            // 将新v存入map
            put(key, newValue);
            // 返回新v
            return newValue;
        }
    }

    return v;
}
本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Map之computeIfAbsent
  • 优化前
  • 优化后
  • 源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com