如何在Java中为对象的重复实例定义标准?

如何在Java中为对象的重复实例定义标准?,java,duplicates,equals,Java,Duplicates,Equals,我有一个类,它包含一些主字段,这些主字段是它的所有构造函数必需的,然后是其他辅助字段,如果它们没有初始化,则可以默认为空值。主字段的组合将类的每个实例标识为唯一和不同的对象,因此具有相同主字段的另一个实例可能被视为重复,即使它具有不同的辅助字段 将对象存储在不允许重复的类似列表的结构中时,需要检查重复实例,它是通过重写equals()(例如,ArrayList.contains())来执行的,以使其只查看主字段,而完全忽略所有辅助字段 这是一种有效的方法吗?是的,使用所有主要变量在hashcod

我有一个类,它包含一些主字段,这些主字段是它的所有构造函数必需的,然后是其他辅助字段,如果它们没有初始化,则可以默认为空值。主字段的组合将类的每个实例标识为唯一和不同的对象,因此具有相同主字段的另一个实例可能被视为重复,即使它具有不同的辅助字段

将对象存储在不允许重复的类似列表的结构中时,需要检查重复实例,它是通过重写
equals()
(例如,
ArrayList.contains()
)来执行的,以使其只查看主字段,而完全忽略所有辅助字段


这是一种有效的方法吗?

是的,使用所有主要变量在hashcode()中构造hashcode。
然后在equals()中使用if条件或hashcode。

是的,这是重写
equals()
hashcode()
(以便维护它们的契约)“主字段的组合将类的每个实例标识为唯一和不同的对象”然后是,仅检查
equals
(和
hashCode
)中的主字段。