我的 Java 代码中的对象列表有问题。 该对象填充有以下字段:
-名称 -姓 -出生日期 -车祸日期
现在,这个列表可以计算一些具有相同值的对象(姓名、姓氏、出生日期)
例如:
卢克·天行者 09/10/1970 10/10/2008
卢克·天行者 09/10/1970 10/10/2009
我的目标是删除重复的用户,并在新列表中仅添加每个用户最近发生车祸的用户。
在前面的示例中:
卢克·天行者 09/10/1970 10/10/2009
你们有什么想法吗?
最佳答案
如果你让你的用户类实现Comparable
,那么你可以使用SortedSet
:
class User implements Comparable<User> {
// fields, constructor, methods etc...
@Override
public void compareTo(User other) {
// assuming carAccidentDate is comparable
return carAccidentDate.compareTo(other.carAccidentDate);
}
@Override
public boolean equals(Object other) {
return /* true if name, lastname and birthdate are equal */
}
@Override
public int hashCode() {
return /* hash code of name, lastname and birthdate */
}
}
为了简单起见,我省略了 equals 和 hashCode 实现,但它们也是其工作所必需的。
然后只需从现有的 List
创建您的 SortedSet
,我使用 TreeSet
:
Set<User> latestAccidentsUser = new TreeSet<>(users);
关于java - 过滤对象列表中的重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208646/