删除重复的实体

时间:2014-11-11 18:39:38

标签: java

我在java中有一个实体如下:

Reason{
   long id;
   long userId;
   long resId;
}

我有一个Reason列表,其中一些实例包含相同的userId和resId但具有不同的id。任何人都可以帮我制作另一个不包含相同userId和ResId的Reason列表。

感谢。

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。一个是,你必须遍历所有元素一次,并且每次都要遍历所有其他元素,以便相互检查每个元素。

更有效的方法是将所有项目复制到集合中,但在这种情况下,您必须覆盖equals()方法并比较ID。像这样:

Reason{
    long id;
    long userId;
    long resId;

    @Override
    public boolean equals(Object obj) {
        return obj instanceof Reason && ((Reason) obj).userId == this.userId && ((Reason) obj).resId == resId;
    }
}

然后把它放在一个集合中并返回列表:

Set<Customer> noDuplicates = new HashSet<>(resonList);
resonList.clear();
resonList.addAll(noDuplicates);

您的第一个列表现在不应包含任何重复项。