java—为控制流实现equals()好吗?

isr3a4wc  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(398)

假设我有课 Item ,有很多字段,其中之一是 color .
我还有一节课 Holder 存储 Item .
每个 Holder 可以有任意数量的 Item 只要一个不超过一个 Color 出席。
实施有意义吗 equals() 当两个项目的颜色相等时,使用 Set 支架内的物品数量?或者我应该 equals 仅当所有字段相等时才返回true,并使用另一个逻辑实现 Holder 逻辑?

9wbgstp7

9wbgstp71#

最好为类的equals和hashcode方法创建重写。
主要的考虑应该是怎样使类的示例真正唯一,怎样定义和指定它。
如果它是由color属性定义的,那么就这样吧(尽管这听起来至少在第一次查看时是不太可能的)。
如果不是,那么最好不要使用color字段作为确定唯一性的唯一字段,因为您不知道将来如何使用类的示例。

plupiseo

plupiseo2#

不, equals() 应该比较整个对象,或者应该比较一个自然的唯一值,例如一个id或某个项目代码。
颜色不是项的自然唯一标识符,因此不要实现 equals() 比较一下。
相反,使用 TreeSet 有一个习惯 Comparator 相比之下 color .
或者,使用 Map 键入者 color .

相关问题