我有以下功能,检查一个鳕鱼列表是否包含一个鳕鱼对象:
if (!concorrente.getJcodigoses().contains(cod))
{
return "redirect:" + referrer;
}
我读到我需要像这样覆盖equals方法:
@Override
public boolean equals(Object object)
{
boolean isEqual= false;
if (object != null && object instanceof Jcodigos)
{
isEqual = (this.id == ((Jcodigos) object).id);
}
return isEqual;
}
我将它放在我的Jcodigos.java类中,我注意到concorrente.getJcodigoses()。contains(...永远不会进入我的自定义equals方法......
有什么建议吗?
由于
答案:
我错过了以下方法
@Override
public int hashCode() {
return this.id;
}
答案 0 :(得分:3)
每当提供hashCode()
方法时,您需要提供一个完整的equals()
方法,反之亦然。
这样做的原因是在与集合中的对象交互时履行API契约。有关创建代码hashcode-equals
的提示,请访问该网站Java Docs有关于要求的更多信息。正如关于equals方法的文档中所述:
请注意,通常需要覆盖hashCode方法 每当重写此方法时,都要保持一般 hashCode方法的契约,它声明了相等的对象必须 有相同的哈希码。
答案 1 :(得分:3)
您还必须实施hashCode
。