Android 将字符串强制转换为最新排序

Android 将字符串强制转换为最新排序,android,firebase-realtime-database,Android,Firebase Realtime Database,我有一个关于ArrayList的排序; matchesList.sort(Comparator.comparing(matches::getDate)。然后比较(matches::getTime)) 该值来自Firebase数据库,因此该值存储为字符串,而不是日期(我不想将日期值存储为长格式),格式如下:;年月日 上面的排序没有按预期工作,我在阅读其他文章后猜测,这是因为比较器不知道字符串日期值的实际含义,所以无法按预期对其进行排序 在阅读和玩了一些之后,理想情况下,我希望转换定义ArrayLi

我有一个关于ArrayList的排序; matchesList.sort(Comparator.comparing(matches::getDate)。然后比较(matches::getTime))

该值来自Firebase数据库,因此该值存储为字符串,而不是日期(我不想将日期值存储为长格式),格式如下:;年月日

上面的排序没有按预期工作,我在阅读其他文章后猜测,这是因为比较器不知道字符串日期值的实际含义,所以无法按预期对其进行排序

在阅读和玩了一些之后,理想情况下,我希望转换定义ArrayList结构的类以支持日期类型,但尝试此操作时,我遇到一个错误,即在循环数据集并尝试填充ArrayList时,无法将字符串值转换为日期

matches match = matchSnapshot.getValue(matches.class);
另一篇文章再次谈到这是因为Firebase不支持日期类型,但我也尝试在日期类型变量上使用*.toString,但它仍然不喜欢这样


我的问题是,;有没有办法将日期格式dd/MM/yyyy存储为字符串,然后将其转换为可添加到ArrayList的日期?

我建议您将日期格式dd/MM/yyyy转换为
字符串
时间戳长,然后对时间戳进行排序(您可以使用
Collections.sort()
)。有关时间戳的更多信息,请参见:

然后,当您需要再次使用这些排序的值时,只需将它们转换回最新状态即可。更多信息请点击此处:



希望能有所帮助。

我建议您将
dd/MM/yyyy
格式
字符串
转换为时间戳(长),然后对时间戳进行排序(您可以使用
Collections.sort()
)。有关时间戳的更多信息,请参见:

然后,当您需要再次使用这些排序的值时,只需将它们转换回最新状态即可。更多信息请点击此处:



希望有帮助。

添加您自己的比较器并使用另一个comparating()方法

因为您使用的日期格式不能自然排序,所以无法正确排序。我不知道有哪种日期比较器可以在标准库中随时使用,所以最好自己编写

class DateComparator implements Comparator<String> {
    @Override
    public int compare(String date1, String date2) {
        // TODO: compare your date strings
    }
}
类DateComparator实现Comparator{
@凌驾
公共整数比较(字符串日期1,字符串日期2){
//TODO:比较您的日期字符串
}
}

添加您自己的比较器并使用另一个comparating()方法

因为您使用的日期格式不能自然排序,所以无法正确排序。我不知道有哪种日期比较器可以在标准库中随时使用,所以最好自己编写

class DateComparator implements Comparator<String> {
    @Override
    public int compare(String date1, String date2) {
        // TODO: compare your date strings
    }
}
类DateComparator实现Comparator{
@凌驾
公共整数比较(字符串日期1,字符串日期2){
//TODO:比较您的日期字符串
}
}

在类中添加您自己的方法以返回字符串中的日期与问题的备注相反:,Firebase提供了一种提供时间排序的
日期和时间
数据类型。在类中添加您自己的方法以返回字符串中的日期与问题的备注相反:,Firebase提供了一种日期和时间数据类型,可提供按时间顺序排序。