2013-05-12 70 views
0

我創建了一個帶有顏色對象作爲關鍵字的哈希表。我的源代碼如下所示:在哈希映射中查找關鍵字

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

現在我想檢查,如果已經有一個顏色對象作爲HashMap中的關鍵字。所以我試過這個:

if (hm.get(colorObject) != null){ 

不幸的是,它返回false,雖然顏色是相同的。我在控制檯上打印顏色,始終是java.awt.Color[r=254,g=0,b=0]。我也嘗試了從HashMap的方法containsKey

那又怎麼了?我如何檢查散列表中是否有對象?

+3

如果'Color'對象正確地實現'equals'和'hashCode'(我認爲它確實如此,因爲它是純粹的'java.awt.Color'),它應該可以工作。 – NilsH 2013-05-12 09:04:22

+1

它可能是你錯誤地在地圖中添加了這個顏色的null。 – 2013-05-12 09:11:18

回答

2

嘗試if(hm.containsKey(colorObject))

+0

OP已經嘗試過。 – NilsH 2013-05-12 09:07:27

+0

我再次嘗試了containsKey,它工作。謝謝。但我不知道爲什麼。 – JavaForAndroid 2013-05-12 09:09:53

+0

這是神奇的,它的作品.. ^^對不起,我錯過了@NilsH – kelunik 2013-05-12 09:14:11

0

我嘗試這樣做:

final Map<Color, Integer> colors = new HashMap<>(); 
colors.put(new Color(3030), 1); 
System.out.println(colors.get(new Color(3030))); 

輸出功率爲1,符合市場預期。因此,您的問題不像您在問題中所描述的那樣普遍。