我有一堆類Puzzle
的對象。我已覆蓋equals()
和hashCode()
。當需要向用戶展示解決方案時,我想篩選出所有「相似」的謎題(按我定義的標準),因此用戶只能看到其中的一個。Java:Equalator? (刪除對象集合中的重複項)
相似性是可傳遞的。
實施例:
Result of computations:
A (similar to A)
B (similar to C)
C
D
在這種情況下,僅A或d和B或C將被呈現給用戶的 - 但不是兩個類似的難題。兩個類似的謎題同樣有效。僅向用戶顯示它們纔是重要的。
爲了達到這個目的,我想使用禁止重複的ADT。但是,我不想更改equals()
和hashCode()
方法來返回有關相似性的值。是否有一些Equalator
,如Comparator
,我可以在這種情況下使用?還是有另一種方式我應該這樣做?
我正在處理的課程是一個謎題,它保持着一個字母網格。 (如拼字遊戲。)如果拼圖包含相同的單詞,但方向不同,它被認爲是相似的。所以下面的困擾:
(2, 2): A
(2, 1): C
(2, 0): T
將類似於:
(1, 2): A
(1, 1): C
(1, 0): T
是如何計算的相似性?例如,如果所有的謎題都產生一個整數值,那麼您可以創建一個int - > Puzzle的Hashmap,將每個屈服值舍入到某個相似度閾值。 – 2010-01-01 04:49:22
參見上面的說明 – 2010-01-01 04:56:12