在动态规划问题中,地图包含以前的情况是很正常的,每次到达新状态时,您必须检查它是否已经在地图中,如果已经存在,则使用它,如果没有添加它。我想知道这两种方式在性能和风格上哪个更好: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());
添加回答
举报
0/150
提交
取消