LinkedHashSet不是删除重复项

时间:2014-07-05 08:47:18

标签: java collections set duplicate-removal linkedhashset

我使用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"; 
    }
}

2 个答案:

答案 0 :(得分:5)

您还必须覆盖方法hashCode

@Override
public int hashCode() {
    return toString().hashCode(); 
}

答案 1 :(得分:1)

每当您覆盖hashCode时,请务必覆盖equals