我同意I82的意见,因此您应该避免让B引用他们的父母:这是信息重复,通常只会导致麻烦,但是您可能需要这样做。
即使您将父引用保留在中
B,就哈希码而言,您也应该完全忽略父引用,而仅使用的 真正 内部变量
B来构建哈希码。
该
As为只是容器,其价值是由它们的内容,这是包含的值完全确定
B,依次类推应他们的哈希键。
如果
A是无序集,则必须非常小心,以根据
B值(或
B哈希码)构建的哈希码不依赖于某些排序。例如,如果哈希码是通过将包含的哈希码
B按一定顺序相乘并相乘来构建的,则在计算总和/乘法结果之前,应先按递增顺序对哈希码进行排序。同样,
A.equals(o)一定不能依赖
Bs
的顺序(如果是无序集合)。
请注意,如果您使用
java.util.Collectionin
A,则
B通过忽略父引用来固定s哈希码将自动给出有效的
A哈希码,因为
Collections在默认情况下具有良好的哈希码(有序或无序)。



