累加 map java_Java Map key 不存在时设置初始值,存在时累加计算值的设计方案
在 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 不存在时设置初始值,存在时累加计算值的设计方案相关推荐
- java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例
本文实例讲述了Java实现过滤掉map集合中key或value为空的值.分享给大家供大家参考,具体如下: import java.util.Collection; import java.util.H ...
- Java过滤掉map集合中key或value为空的值
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- Java将map置空_Java实现过滤掉map集合中key或value为空的值示例
Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...
- MAP实现一个key,对应多个Value值。
最近遇到一个对我来说比较棘手的问题,通过java代码实现读取Execle中的数据存到MAP<String,List<Object(实体类中)>>,虽然不难,但是很久不写,感觉比 ...
- 【iOS报错】“this class is not key value coding-compliant for the key userPhoneNum”给字典设置键值对的时候报错...
昨天在给FMDB二次封装的时候,当封装查询方法的时候,出现了这个报错: 报错信息 一.原始代码: 原始代码 当时也是懵逼了,不明所以,查了一些资料,不过大部分都是介绍说是在xib文件设置的时候由于没有 ...
- TCP协议发送SKB时ip_summed初始值为0
转摘至http://www.2cto.com/kf/201301/183563.html?fw_key=B782188880BAA902 tcp_send_ack()函数是内核用来发送ACK的函数,该 ...
- 使用ArrayList时设置初始容量的重要性
https://blog.csdn.net/hyxhbj1/article/details/80937673 https://blog.csdn.net/tb9125256/article/detai ...
- VM安装centos时设置基础软件仓库时出错(设置镜像后依旧出错)
是因为阿里云镜像用不了了,具体可去镜像仓库里看readme文件. 解决方法是把镜像地址改为如下即可(http),版本自行修改: vault.centos.org/8.2.2004/BaseOS/x86 ...
- SQL创建视图时设置默认值
ISNULL(字段,0) 查看全文 http://www.taodudu.cc/news/show-3644124.html 相关文章: 使用SQL创建视图和存储过程 SQL创建视图注意事项 mysq ...
最新文章
- MySQL解压版配置
- 学科网站建设的尝试与思考
- nodejs实现一个简单的 HTTP静态文件服务器(一)
- tornado celery mysql_Python3.7+Tornado5+Celery3+Rabbitmq3实现异步队列任务
- spec linux,linux – 在RPM包中SPEC文件中1%{?dist}的含义是什么?
- Redis 再牛逼,也得设置密码
- matlab的max与min函数
- 如何设计一个良好的接口
- linux快速统计目录大小,linux下统计文件夹、文件的大小--du
- 【LOJ119】单源最短路 模板
- C# 引用访问权限,很多老手都不懂
- std::sort使用
- 这才是晕了哟,dos之家上全是graybird???????????
- ADC的DMA多通道数据采集(雨滴传感器+光敏传感器)
- 良好的Coding习惯,从P3C开始--阿里P3C代码规范扫描插件
- 一元二次方程求根计算机的代码,一元二次方程求根Java源程序代码
- 换硬币 (20 分)Java【循环】
- 交换机学习之划VLAN
- 去培训基础报班学UI设计靠谱吗?
- 利用chrome浏览器的F12功能提取网页中的视频、音乐