我有一堆类的对象Puzzle
。我已经覆盖了equals()
and hashCode()
。当需要向用户展示解决方案时,我想过滤掉所有“相似”的谜题(按照我定义的标准),所以用户只能看到每个谜题中的一个。
相似性是可传递的。
例子:
Result of computations:
A (similar to A)
B (similar to C)
C
D
在这种情况下,只有 A 或 D 和 B 或 C 会呈现给用户——而不是两个类似的拼图。两个类似的谜题同样有效。重要的是它们不会同时显示给用户。
为此,我想使用一个禁止重复的 ADT。但是,我不想更改equals()
andhashCode()
方法来返回关于相似性的值。Equalator
在这种情况下,Comparator
我可以使用一些吗?还是我应该这样做的另一种方式?
我正在学习的课程是一个维护字母网格的拼图。(如拼字游戏。)如果拼图包含相同的单词,但方向不同,则认为它是相似的。所以下面要解惑:
(2, 2): A
(2, 1): C
(2, 0): T
将类似于:
(1, 2): A
(1, 1): C
(1, 0): T