📅  最后修改于: 2023-12-03 15:31:33.866000             🧑  作者: Mango
如果您正在处理一个包含许多对象的列表,并且希望按照其中一个或多个属性在列表中删除重复项,则可以使用以下方法。
我们可以使用 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;
}
}
在上面的代码中,我们使用了 equals
和 hashCode
方法来比较两个对象是否相等。如果两个对象的 property1
和 property2
属性值相等,则我们认为这两个对象是相等的,即 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 数据结构和自定义的对象比较方法来从列表中删除重复项。如果您正在处理一个包含许多对象的列表,并希望按照其中一个或多个属性在列表中删除重复项,则可以使用上述方法。