ArrayList 在 contains() 方法中对对象的求值
ArrayList 是 Java 中高度利用的数据结构。它的关键方法之一 contains() 提供了在列表中搜索对象的能力。一个常见的问题是关于此方法如何确定两个对象是否相等。
equals() 方法的作用
ArrayList 合并了 List 接口,该接口定义了包含() 方法。根据 List 接口规范, contains() 方法调用 equals() 方法来比较对象是否相等。
默认 equals() 行为
默认情况下, equals() 方法比较对象的引用相等性,这意味着仅当对象引用同一对象实例时才被视为相等。此行为不适合大多数自定义类,其中相等性应基于对象的属性。
重写自定义类的 equals()
实现语义相等您的自定义类,您需要重写 equals() 方法。在您的示例中,您提供了 equals() 的实现,该实现根据 Thing 类的 value 属性进行比较。
示例评估
使用您提供的实现equals(),让我们评估 contains() 方法:
ArrayList<Thing> basket = new ArrayList<>(); Thing thing = new Thing(100); basket.add(thing); Thing another = new Thing(100); basket.contains(another); // true
contains() 方法返回 true,因为重写的 equals() 方法比较 thing 和 another 的值属性并确定它们相等。
因此,为了使 contains() 方法能够根据对象的属性正确识别对象,必须重写equals() 方法并提供有意义的比较实现。
以上是ArrayList 的 `contains()` 方法如何评估对象相等性?的详细内容。更多信息请关注PHP中文网其他相关文章!