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

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

我一直在:

对于参数类型Object,int

,运算符+未定义

我不是Java编码器,但引用说它返回一个Object ...我是否必须使用.getValue()方法来提取int?

也许我做错了什么?嗯。

问候。

有帮助吗?

解决方案

我对'Processing'一无所知,但是看一下上面的代码,你需要在添加之前将值转换为整数。

不确定此处使用的是哪个版本的Java,但您可以执行此类操作。

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}

其他提示

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top