java - java如何使用 contains() 方法计算对象?

  显示原文与译文双语对照的内容

假设我创建一个对象并将它的添加到我的ArrayList 。 如果然后创建另一个具有相同构造函数输入的对象,contains() 方法将评估两个对象是否相同。 假设构造函数对输入没有任何作用,并且存储在两个对象中的变量是相同的。


ArrayList<Thing> basket = new ArrayList<Thing>(); 


Thing thing = new Thing(100); 


basket.add(thing); 


Thing another = new Thing(100); 


basket.contains(another);//true or false?




class Thing { 


 public int value; 



 public Thing (int x) {


 value = x;


 }



 equals (Thing x) {


 if (x.value == value) return true;


 return false;


 }


}



这就是 class 应该实现 contains() 返回 true的方式?

时间: 原作者:

ArrayList implements 列表接口。

如果查看 ListJavadoc,你将看到它使用 equals() 方法来评价两个对象是否相同。

原作者:

我认为正确的实现应该是


public class Thing


{


 public int value; 



 public Thing (int x)


 {


 this.value = x;


 }



 @Override


 public boolean equals(Object object)


 {


 boolean sameSame = false;



 if (object!= null && object instanceof Thing)


 {


 sameSame = this.value == ((Thing) object).value;


 }



 return sameSame;


 }


}



ArrayList使用类( 你的case课) 中实现的equals方法来执行相等比较。

原作者:
...