1

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

exists = data.contains(model);

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

来自 a 的数据List<InstructionModel>在此处输入图像描述 InstructionModel 对象中的数据: 在此处输入图像描述

4

2 回答 2

8

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

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

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

于 2013-02-12T19:36:34.853 回答
1

您可能想覆盖上的equals方法InstructionModel

于 2013-02-12T19:37:14.620 回答