java - 如何使用java对对象列表进行排序

标签 java list sorting datetime object

我有 2 个包含相同对象但未排序的列表,我想在比较它们之前先对它们进行排序,以检查它们是否相等。

每个列表中的一个项目如下所示:

第一个列表:

AuditRow{dateStr='2019-04-15 11:16', userStr='admin', entityStr='Users'}

第二个列表:

AuditRow{dateStr='2019-04-15 10:28', userStr='admin', entityStr='Users'}

我尝试使用 Comparator 来解决这个问题,但没有成功 我必须说两个列表都有超过 10 个项目。

我想实现按日期时间对列表进行排序的目标(主要依赖小时,因为所有项目的日期都相同)。

这是我尝试过的:

    Override
    public int compareTo(AuditRow auditRow) {
        int compareage = Integer.parseInt(((AuditRow)auditRow).dateStr.replace(" ",""));
        return Integer.parseInt(this.dateStr.replace(" ",""))-compareage; 
    }

但这并没有起到作用

最佳答案

如果你想按 dateStr 对它们进行排序:

list.sort((obj1,obj2) ->{SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.parse(obj1.getDate()).compareTo(sdf.parse(obj2.getDate());}

我假设 dateStr 是一个字符串,所以我在这里包含了转换,如果它们已经是日期,那么只需执行 (obj1,obj2) -> obj1.getDate().compareTo(obj2.getDate() )

编辑:正如@RobertKock 指出的那样,您甚至不需要将字符串转换为日期,您可以直接比较它而无需任何转换。

关于java - 如何使用java对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55685327/

相关文章:

iphone - 核心数据获取结果顺序

ruby - 按一组参数对 Ruby 数组进行排序,如果未定义则回退到下一个参数

arrays - 多样化排序的算法

java - 图库按钮打开相机和图库

java - 如何存储类的对象?

java - 如何在基类中包含属性文件然后调用其他类?

Python:根据值/条件创建子列表

C# 列表删除不区分大小写

java - 将 Sprite 绘制到 map 上而不是屏幕上

r - 从列表中选择多个元素