當創建HashSet [Array [Byte]]以在一種HatTrie中使用時,我偶然發現了這個問題。在HashSet中使用替代比較
顯然,數組上的標準equals()方法檢查身份。我怎樣才能提供一個替代比較器使用.deepEquals()檢查是否包含一個元素的HashSet?
基本上,我希望這個測試通過:
describe ("A HashSet of Byte Array") {
it("must contain arrays that are equivalent to one that has been added") {
val set = new HashSet[Array[Byte]]()
set += "ab".getBytes("UTF-8")
set must contain ("ab".getBytes("UTF-8"))
}
}
我不能切實包裹陣列(字節)到另一個對象,因爲有很多他們。爲此目的而編寫新的HashSet實現的方法有什麼我可以做的嗎?
您當然對正在依賴訂購的可變數據結構和容器的危險組合是正確的。我只是在原型中嘗試這個,並想知道是否有一種快速的方法來使它工作。這似乎並非如此。我想正確的解決方案將是創建一個類,它實現了一個不變的字節數組和一個我需要的equals方法。 – 2009-07-27 20:26:39