我正在开发具有大量ArraYlists的应用程序,它需要将它们与非列表数据进行比较.当我尝试这种方法时,fdata.contains(data2)它总是返回false.ArayLists包含名为'favdat'的类,如下所示:`
public class favdat {
public String product,term,note,link;
}
Run Code Online (Sandbox Code Playgroud)
并且Data2的定义如下:favdat Data2=new favdat();
我还尝试了保留所有方法,并返回大小为0的列表.我知道有些数据是相同的.
所以问题是如何判断是否fdata包含data2?
比较对象的默认实现是比较它们是否是同一个对象,因此具有完全相同属性的两个对象仍然不等于.您需要做的是覆盖hashCode和equals方法.举个例子:
public int hashCode() {
return product.hashCode() * 31 + term.hashCode();
}
public boolean equals(Object o) {
if (o instanceof favdata) {
favdata other = (favdata) o;
return product.equals(other.product)
&& term.equals(other.term)
&& note.equals(other.note)
&& link.equals(other.link);
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
在java类中,通常以大写字母开头,因此它将是Favdat,并且您的代码通常更容易阅读以保持字段声明分离.
| 归档时间: |
|
| 查看次数: |
4163 次 |
| 最近记录: |