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

标签 java list

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

exists = data.contains(model);

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

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

最佳答案

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

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

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

关于java - 比较列表中同一对象的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840323/

相关文章:

java - 我如何在 Java 中使用 for (ever){} 而不是 for (;;)

python - 如何在python列表中元素为 "-"时将当前元素与下一个元素组合?

python - 从单行列表理解中解包列表

Java 方法仅在使用 JavaFX 的调度程序可运行关闭后运行一次完整代码

java - 如果时间太长,请重新启动操作

java - Hackerrank 不接受有效的解决方案

c++ - 列表中的 std::min_element 不返回最小值

r - 将相同数据帧的列表熔化到 R 中的一个数据帧

python - 打印列表列表中的第一项

java - EJB 3 + JPA2 = 具有空字段的反序列化对象