【发布时间】:2018-08-06 10:21:10
【问题描述】:
在动态规划问题中,有一个包含以前案例的地图是很正常的,每次你到达一个新的状态时,你必须检查它是否已经在地图中,如果有就使用它,如果没有就添加它.我想知道这两种方式在性能和风格上哪个更好:
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#get是 O(1) 如果我没记错的话,我不确定一个比另一个性能好得多。我个人会选择最易读的一个,即第二个。不过要注意线程安全。
标签: java performance dynamic-programming