Java ArrayList with custom object如何检查列表中的对象是否包含1个数据成员值是否正确
我有一个自定义对象的数组列表 自定义对象:Java ArrayList with custom object如何检查列表中的对象是否包含1个数据成员值是否正确,java,android,Java,Android,我有一个自定义对象的数组列表 自定义对象: public class CustomObject { private String name ; private int isCorrcet ; private int icon; private int disableIcon; } 对于具有布尔对象的ArrayList,我们可以检查是否存在任何值为true的布尔对象 arrayList.contains(true); 如何对自定义对象执行此操作。检查是否存在数据成员为正确且值为1的自定义对
public class CustomObject
{
private String name ;
private int isCorrcet ;
private int icon;
private int disableIcon;
}
对于具有布尔对象的ArrayList,我们可以检查是否存在任何值为true的布尔对象
arrayList.contains(true);
如何对自定义对象执行此操作。检查是否存在数据成员为正确且值为
1
的自定义对象 您必须为对象重写并实现equals和hashcode方法
你可以在下面的帖子中找到更多的细节。
contains()方法用于对象的equals/hashcode实现。基本上,它将遍历整个列表,将列表中的每一项传递给对象的equals方法,并将其作为参数传递给“contains”方法。覆盖equals和hashCode。这里有一个例子
public final class MethodName {
private final String name;
private final String mobile;
public MethodName(String name, String mobile) {
this.name = name;
this.mobile = mobile;
}
public String getName(){
return name;
}
public String getMobile(){
return mobile;
}
@Override
public boolean equals(Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
MethodName method = (MethodName) object;
if (this.name == method.getName()
&& this.mobile == mobile.getMobile()) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
hash = 7 * hash + this.name.hashCode();
hash = 7 * hash + this.mobile.hashCode();
return hash;
}
}
您需要在自定义对象中重写equals和hashcode方法,然后在Arraylist上使用contains。
contains()
依赖于equals()
,因此只有当您有equals()
仅依赖于isCorrect
,这可能不适合您(new CsustomObject());自定义对象contain方法工作正常。但是当我使用arrayList.contains(“Name”);CustomObject contain方法不工作。任何人都可以解释为什么。嗯,字符串
不是自定义对象
。因此当然contains()
应该返回false
contains()仅依赖于equals()
。您可以在没有hashCode()
的情况下生存,尽管不建议覆盖其中一个,但不建议覆盖另一个。