2009-10-28 96 views
1

我有一個HashMap,我正在處理中使用,我想增加地圖中的值。我Google'd它,它給我下面的代碼是正確的:HashMap和遞增值處理

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

我不斷收到:

運營商+未定義的參數類型對象,詮釋

我不是Java編碼器,但引用說它返回一個對象...我必須使用它的.getValue()方法來提取int嗎?

也許我在做別的事情嗎?嗯。

問候。

回答

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); 
} 
+0

啊我是類型鑄造與(整數)在前面,但我沒有使用intValue()方法。乙酰膽鹼。謝謝! – David 2009-10-28 13:00:26

+1

小心轉換無類型的對象,因爲您可能會生成ClassCastException。如果這是一個可接受的風險,這將工作正常。 – jheddings 2009-10-28 20:05:49

+0

不幸的是'Integer'類型在processing.org中可用,但不能在processingjs.org中使用。 – 2012-09-16 21:13:20

2

默認情況下,HashMap中會讓你存儲任何類型的對象,而不檢查對象的類型被用於任何鍵或值。

你應該嘗試使用地圖的類型安全的聲明,聲明你的HashMap:

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

(請注意,我假設爲地圖鍵是java.awt.Color中和值始終int)

+3

它必須是整數。泛型中不能使用原始類型。 – amit 2009-10-28 04:19:52

+0

謝謝......我輸入的速度比我的大腦編譯速度快。 – jheddings 2009-10-28 04:24:06