我有幾個存儲同一類的對象的集合,但我想爲它們中的每一個指定一個不同的標識函數(也就是說,在一個集合中,如果Ax = B == Bx,而在另一個A == B如果Ay == By)。爲同一個對象定義多元哈希函數
目前我使用TreeSets爲每個定義不同的比較器。我想知道如果我想切換到HashSets可以做同樣的事情。 Java不允許以與允許比較器進行排序/基於樹的集合相同的方式傳遞單獨的散列函數。我能想到的唯一方法就是創建一個不同的包裝類,併爲每個HashSet的元素實現hashCode()方法。有沒有更好的方法來做到這一點?
您可以將子類實現爲私有內部類,並提供工廠方法來獲取所需的相等語義。這封裝完全選擇 – Andrew 2009-12-28 15:43:36