Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/java-increment-a-map-value.html

Java Map key 不存在时设置初始值,存在时累加计算值的设计方案

Java 笔记 Java 笔记


在 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<String, Float> map = new HashMap<>();

        List<KV> 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<String, Float> map, List<KV> 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}
cp 命令目标目录不存在时,如何自动递归创建不存在的子目录或者叫父目录?如 cp -? file /path/to/copy/file/to ...
脚本开发者往往在使用 mkdir 命令时,需要父目录不存在时自动创建,即递归地创建上级目录,可以通过选项 -p 搞定。 ...
在Django模板中,default_if_none是一个有用的模板过滤器,它允许在变量为None或不存在时提供一个默认值。显示效果类似于: ...
在使用 spring-data-redis 库提供的 redis client 对象 RedisTemplate 进行 set EX NX ...
针对如上问题,先说结论,java 调用方法时,参数传递的是值。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何 ...