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

在动态规划问题中,地图包含以前的情况是很正常的,每次到达新状态时,您必须检查它是否已经在地图中,如果已经存在,则使用它,如果没有添加它。我想知道这两种方式在性能和风格上哪个更好:


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);

第二个似乎效率较低,但允许我避免使用可能在某天导致错误的未初始化变量。


叮当猫咪
浏览 110回答 1
1回答

手掌心

最易读的方式是Map.computeIfAbsent. 它仅在值不存在时添加函数调用,这应该可以忽略不计。代码如下所示:final Value value = map.computeIfAbsent(key, k -> calculateValue());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java