首页 > 解决方案 > 对一组名称和日期进行排序

问题描述

我有一个字符串文件夹名称数组,每个名称都包含日期、时间和时区。数组是这样的:

[
    "folder_name_01-18-2020-19_00_00_PM_EST",
    "folder_name_05-01-2019-00_00_00_AM_EDT",
    "folder_name_12-15-2019-02_00_00_AM_EST"
]

如何对该数组进行排序,以便所有文件夹名称按其日期(从最早到最新)升序排序,例如。上述数组的结果应该是这样的:

[
    "folder_name_05-01-2019-00_00_00_AM_EDT",
    "folder_name_12-15-2019-02_00_00_AM_EST",
    "folder_name_01-18-2020-19_00_00_PM_EST"
]

文件夹名称字符串保证采用这种精确格式。folder_name从不更改,因此每个文件夹名称只会更改时间戳。

我想到了一个听起来非常低效的高级解决方案:

Isolate the datetime from the folder name
Map the datetime to full folder name: {"05-01-2019-00_00_00_AM_EDT":"folder_name_05-01-2019-00_00_00_AM_EDT"}
Add the isolated datetime to an array
Sort the array of datetimes // potential trouble spot b/c of the date format
result = new array()
For item in sorted array:
    result.add(map.get(item))
return result

我想知道是否可以使用改进和/或更好的方法来解决这个问题

标签: java

解决方案


使用自定义找到了一个更好的解决方案Comparator:使用该substring()函数获取日期时间,使用 解析它SimpleDateTime,从结果对象中获取纪元时间Date,然后用于Long.compare()确定哪个时间更晚。


推荐阅读