📜  java 按属性从列表中删除重复项 - Java (1)

📅  最后修改于: 2023-12-03 15:31:33.866000             🧑  作者: Mango

Java 按属性从列表中删除重复项

如果您正在处理一个包含许多对象的列表,并且希望按照其中一个或多个属性在列表中删除重复项,则可以使用以下方法。

实现方法

我们可以使用 HashSet 数据结构来存储不重复的对象,使用自定义的方法来比较对象是否相等。

首先,我们需要定义一个自定义的类来表示列表中的对象,并为其添加 getter 和 setter 方法来获取和设置各个属性值。

public class MyObject {

    private String property1;
    private int property2;

    // constructor, getters and setters

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        MyObject myObject = (MyObject) o;

        if (property2 != myObject.property2) return false;
        return property1 != null ? property1.equals(myObject.property1) : myObject.property1 == null;
    }

    @Override
    public int hashCode() {
        int result = property1 != null ? property1.hashCode() : 0;
        result = 31 * result + property2;
        return result;
    }
}

在上面的代码中,我们使用了 equalshashCode 方法来比较两个对象是否相等。如果两个对象的 property1property2 属性值相等,则我们认为这两个对象是相等的,即 equals 方法返回 true

接下来,我们可以使用 HashSet 数据结构来存储不重复的对象。

List<MyObject> list = new ArrayList<>();
// add objects to list

Set<MyObject> set = new HashSet<>();
set.addAll(list);
list.clear();
list.addAll(set);

首先,我们在列表中添加了一些对象。然后,我们使用 HashSet 的 addAll 方法从列表中去除重复对象,最后清空列表并将不重复的对象重新添加回到列表中。

总结

在本文中,我们介绍了如何使用 Java 的 HashSet 数据结构和自定义的对象比较方法来从列表中删除重复项。如果您正在处理一个包含许多对象的列表,并希望按照其中一个或多个属性在列表中删除重复项,则可以使用上述方法。