比较列表中同一对象的两个实例

时间:2013-02-12 19:33:37

标签: java list

我试图比较两个对象,看看它们是否相同。我从JSON代码创建第一个List,并使用InstructionModel实例填充List(数据)。然后,我通过选择数据并创建InstructionModel的新实例(模型)来将数据与数据库进行比较。但结果总是错误的,我在代码中做错了什么?

exists = data.contains(model);

if(!exists)
{
    //Do Some Stuff Here
}

来自List<InstructionModel>的数据: enter image description here InstructionModel对象中的数据: enter image description here

2 个答案:

答案 0 :(得分:8)

您需要覆盖InstructionModel类的equals方法。 在此方法中,您比较您的值,如果匹配则返回true,否则返回false。

List#contains函数将使用容器中对象的Object#equals函数。如果不覆盖此函数,它将仅比较引用,而不是实际值。

增加: 正如评论所提到的,如果你覆盖'equals'方法,那么你也需要覆盖'hashCode'方法(反之亦然)。集合将使用这些方法来比较对象的实例。例如:如果不覆盖两者,则列表中的两个实例可能被视为相同,但'Hashmap'中的实例不同。

答案 1 :(得分:1)

您可能希望覆盖equals上的InstructionModel方法。