今天提交代码使用SonarLint检查时发现

Map.get and value test should be replaced with single method call应该使用单个方法代替map.get

StatisMaxPower statisMaxPower = map.get(id);
if(statisMaxPower == null){statisMaxPower = new StatisMaxPower();statisMaxPower.setId(id);statisMaxPower.setName(name);map.put(id,statisMaxPower );
}

在JAVA8的Map接口中,增加了一个computeIfAbsent:

default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)

Function是一个函数式接口

R apply(T t);

此方法首先判断缓存map中是否存在指定的key值,如果不存在,会自动调用mappingFunction(key)计算key的value,然后将key = value放入到缓存map

实例代码:

Map<String, String> map = new HashMap<>();
// java8之前,从map中根据key获取value操作可能会下面的操作
String key = map.get("key");
if (key == null) {key = "hh";map.put("key", key);
} else {// 如果key对应的value值存在,进行相应的操作
}// java8之后,上面的操作可以简化为一行,若key的value值为空,会将第二个参数的返回值存入并返回
String val = map.computeIfAbsent("key1", k -> "test");
System.out.println(map);
// 打印:{key1=test, key=hh}

把代码改成如下方法:

StatisMaxPower statisMaxPower = map.computeIfAbsent(id,k ->{StatisMaxPower newStatisMaxPower = new StatisMaxPower();newStatisMaxPower.setId(id);newStatisMaxPower.setName(name);map.put(id,newStatisMaxPower);return newStatisMaxPower;
});

“Map.get“ and value test should be replaced with single method call相关推荐

  1. sonar:默认的扫描规则

    https://blog.csdn.net/liumiaocn/article/details/83550309 https://note.youdao.com/ynoteshare1/index.h ...

  2. Sonar Java默认扫描规则

    规则如下: ".equals()" should not be used to test the values of "Atomic" classes:equa ...

  3. android和ios适配_针对iOS和Android设计时“并非总是”情况的8个UX设计技巧

    android和ios适配 Before going on, I would like to say that everything you read is only based on my UI/U ...

  4. select ...as_一起使用.select .map和.reduce方法可充分利用Ruby

    select ...as by Declan Meehan 由Declan Meehan 一起使用.select .map和.reduce方法可充分利用Ruby (Get the most out o ...

  5. VueJS项目报错解决:router.map is not a function - 方法大全

    VueJS项目报错解决:router.map is not a function - 方法大全 问题描述: vue报错 router.map is not a function 原因和解决办法(2种以 ...

  6. 史上最全的集合框架讲解 ----- Java 集合框架(3)---- Map 相关类最全解析

    引言 好了,步入正题,上篇文章Java 集合框架(2)---- List 相关类解析中我们一起看了一下 List 接口的相关具体类(ArrayList.LinkedList-.),这篇开始我们开始探索 ...

  7. Java Bean 转 Map 的巨坑,注意了!!!

    一.背景 有些业务场景下需要将 Java Bean 转成 Map 再使用. 本以为很简单场景,但是坑很多. 二.那些坑 2.0 测试对象 i mport lombok.Data; import jav ...

  8. 巨坑系列:Java Bean 转 Map 的那些坑

    一.背景 有些业务场景下需要将 Java Bean 转成 Map 再使用. 本以为很简单场景,但是坑很多. 二.那些坑 2.0 测试对象 import lombok.Data;import java. ...

  9. Java SortedMap接口总结 有序Map要实现的接口规范

    SortedMap接口源码重点 SortedMap接口继承自Map接口,自然具有Map接口定义的其他方法,Map源码可以看我这篇文章 Map 实现SortedMap接口表明该Map的键是根据排序规则有 ...

最新文章

  1. 随机森林OOB score作用
  2. [原] Excel(VBA)中数据的非科学记数法显示
  3. mysql 启动个关闭命定_mysql利用phpmyadmin实现数据库同步更新
  4. BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
  5. H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解(转载)
  6. java使用impala存放多条sql_Impala基于内存的SQL引擎的详细介绍
  7. Windows下安装Tensorflow
  8. maven使用mvn命令创建项目异常java.lang.NoClassDefFoundError: org/apache/commons/collections/ExtendedProperties
  9. 华为云回应“关闭私有云”传闻 将进行业务调整形成混合云产品部
  10. php反向解析域名,域名系统 – Cloudflare,反向DNS和php邮件,最终在垃圾邮件文件夹中...
  11. java练习异常函数InputMismatchException
  12. BugKu CTF(杂项篇MISC)--Pokergame
  13. box2d 初识 强大的物理碰撞引擎 结合canvas
  14. 蓝桥杯第四届C/C++ B省赛题目及题解
  15. 正式对标苹果,小米 12 系列三箭齐发,MIUI 欲成为跨设备操作系统
  16. Mendix公司最新调查结果显示:低代码已从企业机构应急技术进阶为核心技术
  17. 【PC工具】HiPC手机远程控制电脑软件,微信小程序远程控制电脑
  18. Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter
  19. Lotus Notes 邮件归档设置
  20. Matlab的Notebook软件工具设置及程序运行

热门文章

  1. pdmreader支持读取xml格式的pdm文件,无法读取二进制格式的pdm文件。
  2. Ubuntu配置指南
  3. 【财务】FMS财务管理系统---应付结算
  4. 别羡慕华为人均年薪70万,先看看华为优秀员工的16项标准!
  5. 安全日志审计系统服务器,日志审计服务器
  6. 来吉林警察学院计算机系咋样,吉林警察学院王牌专业有哪些、各专业排名情况怎样...
  7. 【动手学树莓派】案例实操:点亮你的第一个LED(重点)
  8. 语音识别算法原理文档整理(三)
  9. Python-Django毕业设计教师教学质量评价系统(程序+Lw)
  10. 给自己的服务器传文件 转自别人