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()
的情况下生存,尽管不建议覆盖其中一个,但不建议覆盖另一个。