gpt4 book ai didi

java - 在java集合中查找具有相同id的所有最新记录

转载 作者:行者123 更新时间:2023-12-01 04:12:33 25 4
gpt4 key购买 nike

class Obj{
int x;
int y;
Date z;

public int compareTo(Obj other) {
if(this.z.getTime() > other.getZ().getTime())
return 1;
else if(this.z.getTime() < other.getZ().getTime())
return -1;
else
return 0;
}

boolean equals(Obj other) {
if(x== other.x && y == other.y)
return true;
else
return false;
}
}

现在我有一个list<Obj>当有多个具有相同 id 的对象时,我必须删除重复项并仅选择最新的一个(最新 z)。

sortedSet = new TreeSet(objList);
reversedSortedList = new ArrayList(sortedSet); //This will not be needed if we reverse the comparator logic. However it is not good.
uniqueSet = new HashSet(reverseSortedList);
return uniqueSet;

这是一种很好的做事方式吗?或者有一种更干净、更好的做事方式。另外,我的列表中的元素数量在 1000-10000 之间

谢谢

最佳答案

您可以编写一个单独的比较器来比较您的对象,该对象将能够反向排序(与您实现的逻辑相反),而不是在我们的对象中实现compareTo方法(虽然我可以看到您的类没有实现Comparable接口(interface))。

通过这种方式,您将能够直接获得反向排序的 Set,并且您可以随时轻松更改逻辑,或者可以在不同的地方使用许多不同的比较器。

对于 1000-10000,使用 TreeSet 和 Compartors 是一个不错的选择。

关于java - 在java集合中查找具有相同id的所有最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com