ArrayList 中的对象比较: contains() 如何确定对象相等性
将对象添加到 ArrayList 时,通常会假设包含() 方法将仅根据对象的字段值来评估对象。然而,实际过程比这更加微妙。
在 Java 中,ArrayList 实现的 List 接口定义了 contains() 方法的签名。根据文档,该方法“当且仅当此列表包含指定元素时返回 true”。但是列表如何判断两个对象是否相同呢?
equals() 的作用
答案就在 equals() 方法中,该方法定义在对象类中。该方法负责比较两个对象并确定它们是否表示相同的值。当调用 contains() 方法时,它会在内部调用 equals() 方法来确定指定对象是否与列表中的任何对象匹配。
自定义对象的自定义 equals()
在您的具体示例中,您在 Thing 类中定义了一个自定义 equals() 方法。这是必要的,因为默认情况下,Object 提供的 equals() 方法比较对象引用,而不是字段值。您的实现正确地比较了 value 字段,以确定两个 Thing 对象是否相等。
假设 Thing 类的实现如图所示,则 contains() 方法在搜索相同的对象时确实会返回 true到之前添加到购物篮列表中的一项。这是因为当两个对象的 value 字段匹配时 equals() 方法返回 true。
结论
综上所述,ArrayList 的 contains() 方法利用了equals() 方法判断两个对象是否相等。对于自定义对象类,您可能需要重写 equals() 方法,以根据定义对象相等性的特定属性提供您自己的实现。
以上是ArrayList的contains()方法如何判断对象相等?的详细内容。更多信息请关注PHP中文网其他相关文章!