当前位置: 首页 > 面试题库 >

如果不存在,则将新值放入Map中;如果不存在,则添加新值

唐威
2023-03-14
问题内容

我有一个java.util.Map<Foo, Double>钥匙型课Foo。让我们称为map的实例map

我要添加{
foof}(foo是的一个实例Foo,并且fDouble)该地图。但是,如果键foo已经存在,我想求和f该映射图中的当前值。

目前我使用

Double current = map.get(foo);
f += current == null ? 0.0 : current;
map.put(foo, f);

但是在Java 8中是否有一种时髦的方式来做到这一点,例如使用Map#mergeDouble::sum

遗憾的是我无法弄清楚。

谢谢。


问题答案:

这就是地图上的合并功能的作用。

map.merge(foo, f, (f1, f2) -> f1 + f2)

这可以进一步减少到

map.merge(foo, f, Double::sum)

它基本上等于

if(map.contains(foo)){
    double x = map.get(foo);
    map.put(foo, x + f)
} else {
    map.put(foo, f)      
}


 类似资料:
  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 问题内容: 如果存在,它就可以工作,但是如果不存在,我想将此数据作为新行插入。 更新 datenum是唯一的,但这不是主键 问题答案: Jai是正确的,您应该使用。 请注意,由于它是唯一键,因此不需要在update子句中包含datenum,因此它不应更改。您确实需要包括表中的所有其他列。您可以使用该函数来确保在更新其他列时使用正确的值。 这是使用适用于MySQL 的正确语法重写的更新:

  • 问题内容: 我有一些看起来像这样的代码。我必须保留表中的一个自动递增字段(在其他表中使用)。我想简化和优化此代码。 编辑:主键ID是自动递增的字段。我永远都不想改变。但是,当另一个字段重复时,这就是我要更新该记录的时间。 问题答案: 如何替换成: 假设col1是您的主键,如果已经存在一个值为’foo’的行,它将更新其他两列。否则,它将插入新行。

  • 问题内容: 我在使用SQL查询时遇到问题。如果同一行尚不存在,我需要插入一行。这是我到目前为止的内容: 我对sql不太熟悉,尤其是不存在的语法,因此在执行时会出现以下错误: ORA-06550:第37行,第11列:PLS-00103:在预期以下情况之一时遇到了符号“ INSERT”: 然后和或 用“ then”符号代替“ INSERT”继续。 following: the following: 问

  • 问题内容: 我想要做的就是在我的数据库的用户,但它应该排,一个新行。 Ofcourse我连接到数据库第一和的,并从URL字符串。 可以,但是只添加新行; 这是我尝试过的; 和 和 但是它们都不起作用,我在做什么错? 任何帮助是极大的赞赏! 问题答案: 如果不存在约束,请在您的列上创建约束: 用途: (subs_name, subs_email, subs_birthday) VALUES (?,

  • 我有一个表wp_postmeta 表smth如下所示: 我需要创建一个触发器,如果不存在meta_key='area'和meta_value='0',该触发器将在此表中添加一个字符串。或者更新meta_key='area'和meta_value='null'的位置。 但是...每个post_id可能有很多meta_key。并且每个post_id的meta_key='area'被设置为限制1。但是问