【发布时间】:2016-01-11 11:32:23
【问题描述】:
我有如下两段代码:
code 1:
Optional.fromNullable(integerVsLongMap.get(id)).or(getDefaultLong());
和
code 2:
integerVsLongMap.contains(id) ? integerVsLongMap.get(id) : getDefaultLong();
我想知道哪段代码在空间和时间复杂度以及编码实践方面更有效和更可取,因为我看到的是两者都做同样的事情?
【问题讨论】:
-
不是一个直接的答案:你有没有想过对此进行微基准测试?除此之外(在我看来):代码变体 2 看起来不太好。
-
@Marged 不是直接答案吗?也许你的意思是“问题”?无论如何,这里有什么间接的?
-
如果使用 Java 7 或更早版本,
integerVsLongMap中是否有非空值的限制?如果不是,(2) 是唯一的正确 方法,因为地图中可能存在空值。正确性应该胜过效率和可读性。如果使用 Java 8,请使用Map.getOrDefault。 -
我想说我的评论/回答并不是直接完全回答你问题的那种回复。就是这样。
标签: java performance time-complexity space-complexity