gpt4 book ai didi

java - 我怎样才能不通过 putAll() 覆盖值而是添加到当前值?

转载 作者:行者123 更新时间:2023-12-02 16:15:35 26 4
gpt4 key购买 nike

假设我有两个 HashMap :

HashMap <String, Integer> h1;
h1.put("hi", 30);
h1.put("hi2",20);
h1.put("hi3",10);
h1.put("hi4",20);


HashMap <String, Integer> h2;
h2.put("hi", 20);
h2.put("hi2", 20);
h2.put("hi3", 20);
h2.put("hi4", 20);

我的问题是,如果我执行以下操作

h2.putAll(h1);

如何将 h2 的值更新为总和,而不是仅仅覆盖它?这就是我想要的

[{"hi"=50}]
[{"hi2"=40}]
[{"hi3"=30}]
[{"hi4"=40}]

代替这个

[{"hi"=30}]
[{"hi2"=20}]
[{"hi3"=10}]
[{"hi4"=20}]

注意:不允许使用函数构造(包括 lambda 表达式)和外部库

最佳答案

您可以使用 merge方法:

    h1.forEach((key, value) -> h2.merge( key, value, Integer::sum));
System.out.println(h2);

老办法:

    for(String key : h1.keySet()){
Integer v1 = h1.get(key);
Integer v2 = h2.get(key);
h2.put(key, (v2 == null) ? v1 : v1 + v2);
}
System.out.println(h2);

关于java - 我怎样才能不通过 putAll() 覆盖值而是添加到当前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66844970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com