1

我有一个在处理中使用的 HashMap,我想增加地图中的值。我用谷歌搜索了一下,它告诉我以下代码是正确的:

if (colors.containsKey(ckey))
{
    colors.put(ckey, colors.get(ckey) + 1);
} else {
    colors.put(ckey, 1);
}

我不断得到:

运算符 + 未定义参数类型 Object, int

我不是 Java 编码员,但参考资料说它返回一个 Object...我必须在其上使用 .getValue() 方法来提取 int 吗?

也许我做错了什么?嗯。

问候。

4

2 回答 2

2

默认情况下,HashMap 将允许您存储任何类型的对象,而无需检查用于键或值的对象类型。

您应该尝试使用地图的类型安全声明来声明您的 HashMap:

HashMap<Color, Integer> colors = new HashMap<Color, Integer>();

(请注意,我假设地图的键是 java.awt.Color 并且值始终是 int)

于 2009-10-28T04:17:20.850 回答
0

我对“处理”一无所知,但查看上面的代码,您需要在添加之前将值类型转换为整数。

不确定这里使用的是什么版本的 Java,但你可以做这样的事情。

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}
于 2009-10-28T04:10:35.017 回答