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

在java集合中查找具有相同id的所有最新记录,java,list,set,unique,treeset,Java,List,Set,Unique,Treeset,这是一种好的做事方式吗。或者有一种更干净更好的做事方式。此外,列表中的元素数量在1000-10000之间 谢谢您可以编写一个单独的比较器来比较您的对象,该比较器将能够以相反的逻辑对您实现的对象进行排序,而不是在我们的对象中实现compareTo方法,而我可以看到您的类没有实现可比较的接口 通过这种方式,您将能够直接获得反向排序集,并且您可以随时轻松地更改逻辑,或者可以在不同的位置使用许多不同的比较器 对于1000-10000,使用TreeSet是比较器的一个很好的选择。比较器可以优化为: sor

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


谢谢

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

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


对于1000-10000,使用TreeSet是比较器的一个很好的选择。

比较器可以优化为:

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;

由于z.getTime返回一个长字符串,int compareTo中将出现编译错误。您可以显式转换为int
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;
public int compareTo(Obj other) {
        return (int)(this.z.getTime() - other.getZ().getTime());
}