class のオブジェクトがたくさんありますPuzzle
。と をオーバーライドequals()
しhashCode()
ました。ユーザーに解決策を提示するときが来たら、(私が定義した基準によって) "類似" しているすべてのパズルを除外して、ユーザーにはそれぞれのパズルが 1 つだけ表示されるようにします。
類似度は推移的です。
例:
Result of computations:
A (similar to A)
B (similar to C)
C
D
この場合、A または D および B または C のみがユーザーに表示されますが、2 つの類似したパズルは表示されません。2 つの類似したパズルは、同じように有効です。両方がユーザーに表示されないことだけが重要です。
これを実現するために、重複を禁止する ADT を使用したいと考えました。ただし、代わりに類似性に関する値を返すようにequals()
andメソッドを変更したくありません。この場合に使用できるのようなものhashCode()
はありますか? または、これを行うべき別の方法はありますか?Equalator
Comparator
私が取り組んでいるクラスは、文字のグリッドを維持するパズルです。(スクラブルのように。) パズルに同じ単語が含まれていても、方向が異なる場合、類似していると見なされます。したがって、パズルを解くには次のようにします。
(2, 2): A
(2, 1): C
(2, 0): T
次のようになります。
(1, 2): A
(1, 1): C
(1, 0): T