在 java 中使用 Map 时,针对 key 进行数值的累计运算,需要指定键不存在时,设置初始值,特定 key 存在时,对已有键值进行累加。

参考方案

java 8 中,Map 中增加了 getOrDefault 方法,该方法在指定 key 不存在时,可以指定默认的返回值,利用该方法示例代码如下:

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class MapDemo {

public static void main(String[] args) {

Map map = new HashMap<>();

List kvList = new ArrayList<>();

kvList.add(new KV("knowledge", 16f));

kvList.add(new KV("dict", 8f));

kvList.add(new KV("knowledge", 2f));

incrementMapValue(map, kvList);

System.out.println(map);

}

// map 指定 key 累加值方法

public static void incrementMapValue(Map map, List kvList) {

for (KV kv : kvList) {

map.put(kv.getKey(), map.getOrDefault(kv.getKey(), 0f) + kv.getValue());

}

}

static class KV {

private String key;

private Float value;

public KV(String key, Float value) {

this.key = key;

this.value = value;

}

public String getKey() {

return key;

}

public void setKey(String key) {

this.key = key;

}

public Float getValue() {

return value;

}

public void setValue(Float value) {

this.value = value;

}

}

}

输出结果如下:

{dict=8.0, knowledge=18.0}

累加 map java_Java Map key 不存在时设置初始值,存在时累加计算值的设计方案相关推荐

  1. java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例

    本文实例讲述了Java实现过滤掉map集合中key或value为空的值.分享给大家供大家参考,具体如下: import java.util.Collection; import java.util.H ...

  2. Java过滤掉map集合中key或value为空的值

    import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  3. Java将map置空_Java实现过滤掉map集合中key或value为空的值示例

    Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...

  4. MAP实现一个key,对应多个Value值。

    最近遇到一个对我来说比较棘手的问题,通过java代码实现读取Execle中的数据存到MAP<String,List<Object(实体类中)>>,虽然不难,但是很久不写,感觉比 ...

  5. 【iOS报错】“this class is not key value coding-compliant for the key userPhoneNum”给字典设置键值对的时候报错...

    昨天在给FMDB二次封装的时候,当封装查询方法的时候,出现了这个报错: 报错信息 一.原始代码: 原始代码 当时也是懵逼了,不明所以,查了一些资料,不过大部分都是介绍说是在xib文件设置的时候由于没有 ...

  6. TCP协议发送SKB时ip_summed初始值为0

    转摘至http://www.2cto.com/kf/201301/183563.html?fw_key=B782188880BAA902 tcp_send_ack()函数是内核用来发送ACK的函数,该 ...

  7. 使用ArrayList时设置初始容量的重要性

    https://blog.csdn.net/hyxhbj1/article/details/80937673 https://blog.csdn.net/tb9125256/article/detai ...

  8. VM安装centos时设置基础软件仓库时出错(设置镜像后依旧出错)

    是因为阿里云镜像用不了了,具体可去镜像仓库里看readme文件. 解决方法是把镜像地址改为如下即可(http),版本自行修改: vault.centos.org/8.2.2004/BaseOS/x86 ...

  9. SQL创建视图时设置默认值

    ISNULL(字段,0) 查看全文 http://www.taodudu.cc/news/show-3644124.html 相关文章: 使用SQL创建视图和存储过程 SQL创建视图注意事项 mysq ...

最新文章

  1. MySQL解压版配置
  2. 学科网站建设的尝试与思考
  3. nodejs实现一个简单的 HTTP静态文件服务器(一)
  4. tornado celery mysql_Python3.7+Tornado5+Celery3+Rabbitmq3实现异步队列任务
  5. spec linux,linux – 在RPM包中SPEC文件中1%{?dist}的含义是什么?
  6. Redis 再牛逼,也得设置密码
  7. matlab的max与min函数
  8. 如何设计一个良好的接口
  9. linux快速统计目录大小,linux下统计文件夹、文件的大小--du
  10. 【LOJ119】单源最短路 模板
  11. C# 引用访问权限,很多老手都不懂
  12. std::sort使用
  13. 这才是晕了哟,dos之家上全是graybird???????????
  14. ADC的DMA多通道数据采集(雨滴传感器+光敏传感器)
  15. 良好的Coding习惯,从P3C开始--阿里P3C代码规范扫描插件
  16. 一元二次方程求根计算机的代码,一元二次方程求根Java源程序代码
  17. 换硬币 (20 分)Java【循环】
  18. 交换机学习之划VLAN
  19. 去培训基础报班学UI设计靠谱吗?
  20. 利用chrome浏览器的F12功能提取网页中的视频、音乐

热门文章

  1. Systrace6 Input 解读
  2. Python 异步编程之——协程
  3. 游戏3D建模师是一个什么样的职业
  4. linux查看根目录所有磁盘空间,linux查看磁盘空间及处理方法
  5. 《恋爱攻略》手游用户协议
  6. InDesign 教程:如何设置边距和分栏?
  7. 利用Python网络爬虫成为朋友圈内斗图小高手
  8. 愤怒驳斥微软中国的一派胡言
  9. 雅特力单片机开发笔记
  10. python :中英文文本预处理(包含去标点分词词干提取)