如果在hashmap.put中调用构造

时间:2008-11-23 09:15:03

标签: java hashmap

我有一个Hashmap <String,Integer&gt;类型的变量。

在这种情况下,Integer值可能必须根据flag变量的值进行一些操作。我这样做了......

Hashmapvariable.put( somestring,
    if (flag_variable) {
     //manipulation code goes here
     new Integer(manipulated value);
    } else {
     new Integer(non-manipulated value);
    }
);

但是我收到了一个错误:

  

令牌上的语法错误,放错位置   构建体。

在Hashmapvariable.put调用。

我还得到另一个错误

  

令牌上的语法错误“)”,删除它   令牌。

在决赛中“);”线。但我无法删除“)” - 它是put方法调用的右括号。

我不懂。我在做什么错误?

3 个答案:

答案 0 :(得分:7)

 new Integer(flag_variable ? manipulated value : non-manipulated value)

技巧

编辑: 在Java 5上,我想你也可以写

hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)

由于自动拳击。

答案 1 :(得分:4)

您不能在方法调用中放置语句。

但是,一个选项可能是创建一个返回Integer的方法,例如:

private Integer getIntegerDependingOnFlag(boolean flag)
{
    if (flag)
        return new Integer(MANIPULATED_VALUE);
    else
        return new Integer(NON-MANIPULATED_VALUE);
}

然后,您可以这样打电话:

hashmap.put(someString, getIntegerDependingOnFlag(flag));

答案 2 :(得分:0)

这不是方案,因此如果语句不评估为值。你必须使用tri-if-thing(这个名字现在由于某种原因逃脱了我)或创建一个函数,就像其他人说的那样。