我试图比较两个对象,看看它们是否相同。我从JSON代码创建第一个List,并使用InstructionModel实例填充List(数据)。然后,我通过选择数据并创建InstructionModel的新实例(模型)来将数据与数据库进行比较。但结果总是错误的,我在代码中做错了什么?
exists = data.contains(model);
if(!exists)
{
//Do Some Stuff Here
}
来自List<InstructionModel>
的数据:
InstructionModel对象中的数据:
答案 0 :(得分:8)
您需要覆盖InstructionModel类的equals方法。 在此方法中,您比较您的值,如果匹配则返回true,否则返回false。
List#contains
函数将使用容器中对象的Object#equals
函数。如果不覆盖此函数,它将仅比较引用,而不是实际值。
增加: 正如评论所提到的,如果你覆盖'equals'方法,那么你也需要覆盖'hashCode'方法(反之亦然)。集合将使用这些方法来比较对象的实例。例如:如果不覆盖两者,则列表中的两个实例可能被视为相同,但'Hashmap'中的实例不同。
答案 1 :(得分:1)
您可能希望覆盖equals
上的InstructionModel
方法。