我有一个我在Processing中使用的HashMap,我想增加地图中的值。我谷歌了,它告诉我以下代码是正确的:
if (colors.containsKey(ckey))
{
colors.put(ckey, colors.get(ckey) + 1);
} else {
colors.put(ckey, 1);
}
我一直在:
对于参数类型Object,int
,运算符+未定义我不是Java编码器,但引用说它返回一个Object ...我是否必须使用.getValue()方法来提取int?
也许我做错了什么?嗯。
问候。
答案 0 :(得分:2)
默认情况下,HashMap允许您存储任何类型的对象,而无需检查用于键或值的对象类型。
您应该尝试使用地图的类型安全声明声明您的HashMap:
HashMap<Color, Integer> colors = new HashMap<Color, Integer>();
(请注意,我假设地图的键是java.awt.Color,值总是int)
答案 1 :(得分:0)
我对'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);
}