【发布时间】:2019-09-05 04:59:36
【问题描述】:
我有 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;
}
但这并没有成功
【问题讨论】:
-
Comparator将是正确的方法。你在那里尝试了什么,什么没有成功? -
您希望如何对它们进行排序。并粘贴您已经尝试过的内容。
-
@user2478398 这是我尝试过的: 覆盖 public int compareTo(AuditRow auditRow) { int compareage = Integer.parseInt(((AuditRow)auditRow).dateStr.replace(" ","")) ; return Integer.parseInt(this.dateStr.replace(" ",""))-compareage;但这并没有成功
-
感谢您提供更多信息。请始终在问题本身中添加此类内容。只是这一次我为你做了。
-
不要将日期和时间作为字符串存储在您的
AuditRow对象中。如果您不知道时区,LocalDateTime将是用于日期和时间的类型。如果你这样做,ZonedDateTime或Instant会更合适。然后只需使用Comparator.comparing(ar -> ar.dateTime)。或者更好的是,提供一个 getter 而不是公开一个公共字段。
标签: java list sorting datetime object