java - 过滤对象列表中的重复对象

标签 java list object filter duplicates

我的 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/

相关文章:

java - 无法从 Firestore 读取自定义对象 - 为什么?

java - 为什么 Scala List 没有 size 字段?

Python 错误 : List Object Not Callable with For Loop

javascript - 扩展/合并对象

javascript - 将字符串点符号转换为 JavaScript 对象

java - 在java中使用超出范围的变量

java - Java中如何修改这个String?

java - java中检查空引用的乐观方法

VB.Net 使用属性名称对列表进行排序

javascript - 在对象内插入按钮?