我有一个java.util.Map<Foo, Double>
钥匙型课Foo
。让我们称为map的实例map
。
我要添加{
foo
,f
}(foo
是的一个实例Foo
,并且f
一Double
)该地图。但是,如果键foo
已经存在,我想求和f
该映射图中的当前值。
目前我使用
Double current = map.get(foo);
f += current == null ? 0.0 : current;
map.put(foo, f);
但是在Java 8中是否有一种时髦的方式来做到这一点,例如使用Map#merge
和Double::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。但是问