为控制流实现 equals() 好不好?

Moh*_*zaq 0 java equals set object-oriented-analysis

假设我有一个类Item,它有很多字段,其中一个是color.
我还有另一个类Holder存储Item.
每个都Holder可以有任意数量的实例,Item只要每个实例不超过一个Color

equals()以一种在两个项目的颜色相等时返回 true 的方式实现,在SetHolder 内部使用 a of items是否有意义?或者我应该equals只在所有字段都相等时才返回 true 并使用另一种逻辑来实现Holder逻辑?

And*_*eas 5

不,equals()应该比较整个对象,或者应该比较自然的唯一值,例如 ID 或某些项目代码。

颜色不是一个项目的自然唯一标识符,所以不要equals()进行比较。

相反,将 aTreeSetComparator比较的自定义一起使用color

或者,使用Mapkeyed by color