如果评估声明两次,是否会短路?

时间:2015-09-01 07:14:02

标签: java if-statement

我有以下代码:

int num = (map.get(result.getNumber()) != null ? map.get(result.getNumber()) : 0);

我的问题是:

map.get执行了两次(一次用于评估,一次用于放置)?

我的目标是将get语句缩减为单个调用。

注意:result.getNumber可以为空。

3 个答案:

答案 0 :(得分:3)

在java 8中,getOrDefault方法被添加到Map接口。如果您未在地图中存储null作为值,则可以使用以下代码:

int num = map.getOrDefault(result.getNumber(), 0);

答案 1 :(得分:1)

是的,map.get被调用两次。只需创建一个局部变量,用它来存储值。

Integer x = map.get(result.getNumber());
int num = (x != null ? x : 0);

答案 2 :(得分:0)

只需将其存储到如下变量中: -

Integer tempVar = map.get(result.getNumber());

int num = (tempVar != null ? tempVar  : 0);