2012-12-06 242 views
2
HashSet<int[]> a = new HashSet<int[]>(); 
int[] somestuff = {1, 2, 3}; 
a.add(somestuff); 
int[] somestuff2 = {1, 2, 3}; 
System.out.println(a.contains(somestuff2)); 

false如何檢查HashSet是否包含值?

如何正確檢查?只有當我檢查somestuff時,我纔會得到真實的,但即使變量名稱/字面量不相同,但值是,我想獲得true。什麼方法調用可以讓我做到這一點?我想檢查值...

也許它是與該組中的內容被散列,也依賴於,最初用來填充它

+3

'int []'不執行「深」等於。 –

+0

好吧我即將嘗試arraylist然後 –

+1

是的,ArrayList應該工作。當然,你必須有Integer元素。 –

回答

1

可變文本有沒有直接簡單方式做你想做的,但是...

我會創建一個類,它由int[]字段組成,並基於數組內容實現equals()和一致的hashCode()

一個Set如果這樣的對象可以再使用:

Set<MyClass> s; 
MyClass o; 
boolean b = s.contains(o); 
0

您無法通過調用a.contains()方法做到這一點。你必須迭代hash tabel並檢查兩個數組是否相同。