我使用LinkedHashSet删除重复的条目。但对于以下自定义模型,Set仍保留重复条目。请帮我找到错误。覆盖equals方法有什么问题吗?对于您的类型信息,当他们的电话,类型和状态相同时,我只会将两个节点等于。
public class BlockNode {
public int id;
public int type;
public int status;
public String phone;
public String date;
public String content;
@Override
public boolean equals(Object o) {
return this.toString().equals(((BlockNode)o).toString());
}
@Override
public String toString() {
return "number:" + phone + " type:" + type + " status:" + status + "\n";
}
}
答案 0 :(得分:5)
您还必须覆盖方法hashCode
。
@Override
public int hashCode() {
return toString().hashCode();
}
答案 1 :(得分:1)
每当您覆盖hashCode
时,请务必覆盖equals
。