为了账号安全,请及时绑定邮箱和手机立即绑定

哪种风格更适合经典的动态规划 if-not-contains-then-put?

哪种风格更适合经典的动态规划 if-not-contains-then-put?

叮当猫咪 2021-06-22 13:49:46
在动态规划问题中,地图包含以前的情况是很正常的,每次到达新状态时,您必须检查它是否已经在地图中,如果已经存在,则使用它,如果没有添加它。我想知道这两种方式在性能和风格上哪个更好:Value value;if(!map.contains(key)){    value = calculateValue();    map.put(key, value);} else {    value = map.get(key);}还有这个:if(!map.contains(key)){    map.put(key, calculateValue());}Value value = map.get(key);第二个似乎效率较低,但允许我避免使用可能在某天导致错误的未初始化变量。
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

最易读的方式是Map.computeIfAbsent. 它在值不存在时添加函数调用,这应该可以忽略不计。

代码如下所示:

final Value value = map.computeIfAbsent(key, k -> calculateValue());


查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信