首页 > 其他分享 >MapUtils工具类

MapUtils工具类

时间:2023-11-28 22:25:30浏览次数:29  
标签:map return get MapUtils value computeIfAbsent key 工具

针对mybatis3下的org.apache.ibatis.uitl下的MapUtils说明:

 代码如下:

public class MapUtil {
  /**
   * A temporary workaround for Java 8 specific performance issue JDK-8161372 .<br>
   * This class should be removed once we drop Java 8 support.
   *
   * @see <a href=
   *      "https://bugs.openjdk.java.net/browse/JDK-8161372">https://bugs.openjdk.java.net/browse/JDK-8161372</a>
   */
  public static <K, V> V computeIfAbsent(Map<K, V> map, K key, Function<K, V> mappingFunction) {
    V value = map.get(key);
    if (value != null) {
      return value;
    }
    return map.computeIfAbsent(key, mappingFunction);
  }

  /**
   * Map.entry(key, value) alternative for Java 8.
   */
  public static <K, V> Entry<K, V> entry(K key, V value) {
    return new AbstractMap.SimpleImmutableEntry<>(key, value);
  }

  private MapUtil() {
  }
}

重点说明其中提到的解决bug问题:https://bugs.openjdk.java.net/browse/JDK-816137

实际上是使用ConcurrentHashMap的computeIfAbsent方法时,会有性能问题,特别是同一个key同时进行computeIfAbsent时,所以前置使用了map.get方法进行获取属性,可以提升性能:直接调用 computeIfAbsent 的性能是每秒百万级,先调用 get 做检查的性能是每秒十亿级。

为什么性能会差异这么多那?

在jdk8下,ConcurrentHashMap即使 key 存在,computeIfAbsent 去找 key 的时候,都会进入 synchronized 代码。

 

标签:map,return,get,MapUtils,value,computeIfAbsent,key,工具
From: https://www.cnblogs.com/use-D/p/17853408.html

相关文章

  • VisionPro学习笔记(5)——极轴展开工具PolarUnwrapTool
    如果需要了解其他图像处理的文章,请移步小编的GitHub地址传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPracticeVisionPro有很多的示例和算子,这里展示一个基础的算子PolarUnwrapTool。我自己的笔记不会按照顺序一一展示出来的,也许那......
  • 2024年项目管理利器:十大工具全面解析!
    十大项目管理系统包括:1.产品研发项目管理工具:PingCode;2.通用项目协作工具:Worktile;3.开源项目管理系统:Redmine;4.IT/敏捷项目管理系统:Jira;5.免费个人项目管理:Teambition;6.桌面项目管理工具:MSProject;7.在线项目管理工具:Asana;8.小团队项目管理工具平台:Trello;9.通用型项目管理APP:Cl......
  • Scrum敏捷开发流程核心及敏捷支持工具
    ​Scrum是一种敏捷开发框架,用于管理复杂的项目。以下这些步骤构成了Scrum敏捷开发流程的核心。通过不断迭代、灵活应对变化和持续反馈,Scrum框架帮助团队快速交付高质量的产品。以下是Scrum敏捷开发流程的基本步骤:产品Backlog创建: 产品负责人与利益相关者合作,制定产品Backlog......
  • Python-JSON文件操作简化的工具库,支持读取和修改
    这是一个关于python操控json的工具类可以利用get方法以路径的形式查看内容,输出的格式为列表或字典change方法用于修改指定路径下的内容,支持修改内容为字典和列表的形式修改后使用save方法进行保存以下是代码:importjsonimporttimeimportrandomclassError_message:......
  • pip工具安装
    pip工具(1)安装第三方模块pipinstall模块名==#查看我当前模块都有哪些版本pipinstall模块名==版本号#安装指定版本的模块(2)卸载模块pipuninstall模块名临时换源pipinstall模块名-i镜像原地址镜像源清华大学: https://pypi.tuna.tsinghua.edu......
  • 维护工具
    ASP.NETCoreonK8s入门学习系列文章目录 自从2018年底离开工作了3年的M公司加入X公司之后,开始了ASP.NETCore的实践,包括微服务架构与容器化等等。我们的实践是渐进的,当我们的微服务数量到了一定值时,发现运维工作量已将增加了很多,因此容器编排引擎的需求也随之产生。......
  • 微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
    因业务需要,开发微信支付功能,涉及三种支付方式:JSAPI支付:微信内网页支付,需要开通微信服务号小程序支付:在小程序中支付,需要开通小程序H5支付:在手机浏览器(出微信内网爷)中网页支付使用微信支付的前提必开通微信商户号,要使用到那种的支付方式要前需在商户平台开通(要审核)。支付......
  • TTS文本转语音工具
    微信小程序:配音神器Pro(抖音/快手都是用的里面的声音)主流云TTS:微软Azure、阿里、腾讯、讯飞;一、Toolfkhttps://www.toolfk.com/tools/online-text2video.html二、迅捷文字转语音三、微软文字转语音四、当贝文字转语音五、喜马拉雅云剪辑 五、nopapphttp://www.nopapp.com......
  • 常用工具网站链接
    ======工具网站集合======在线工具集合:  https://tool.lu ======字符串处理=======在线sha512 在线计算Sha512摘要工具(config.net.cn) ======图片   处理======= HoloCubic图片专C代码  Onlineimageconverter-BMP,JPGorPNGtoCarrayorbinar......
  • 我们开源了一个 Ant Design 的单元测试工具库
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:佳岚欢迎大家点一个小小的Star......