gpt4 book ai didi

java - 对于经典的动态规划 if-not-contains-then-put 来说,哪种风格更好?

转载 作者:行者123 更新时间:2023-12-01 16:45:43 25 4
gpt4 key购买 nike

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

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

第二个似乎效率较低,但可以让我避免使用未初始化的变量,从而有一天可能会导致错误。

最佳答案

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

代码如下:

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

关于java - 对于经典的动态规划 if-not-contains-then-put 来说,哪种风格更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51705429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com