質問
Processingで使用しているHashMapがあり、マップの値を増やしたいのですが。私はそれをGoogleで調べましたが、次のコードが正しいことがわかりました:
if (colors.containsKey(ckey))
{
colors.put(ckey, colors.get(ckey) + 1);
} else {
colors.put(ckey, 1);
}
引き続き取得:
演算子+は、引数型オブジェクト、intに対して未定義です
私はJavaコーダーではありませんが、リファレンスではObjectを返すと言われています... intを抽出するために.getValue()メソッドを使用する必要がありますか?
たぶん私は何か間違ったことをしているのでしょうか?うーん。
よろしく。
解決
「処理」については何も知りませんが、上記のコードを見ると、追加する前に値を整数に型キャストする必要があります。
ここで使用されている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であると想定していることに注意してください)
所属していません StackOverflow