【发布时间】:2018-04-27 05:15:42
【问题描述】:
我有以下 Java POJO,Start date 是一个字符串:
POJO 对象:
public class Schedule {
private String id;
private String startDate = "";
//const and getters and setters
}
我想按开始日期字段对这些对象的列表进行排序:
将 POJOS 添加到列表中:
List<Schedule> schedules = new ArrayList<Schedule>();
Schedule s1 = new Schedule();
s1.setStartDate("2018-09-01T15:00:00+0000");
Schedule s2 = new Schedule();
s2.setStartDate("2018-09-15T15:00:00+0000");
schedules.add(s1);
schedules.add(s2);
我试过写一个comparator,但它似乎不起作用,有没有办法按日期(最早在先)对strings 进行排序?
编辑:我目前使用的是 Java 7
【问题讨论】:
-
这些时间戳有一个时区部分。我认为您需要将字符串转换为某种日期,然后进行排序。
-
为什么不把
startDate字段的类型改为OffsetDateTime?我应该说这是更好更健全的建模。 -
如果——但仅当——区域偏移量总是
+0000,你可以对字符串进行排序。不过,不推荐使用肮脏的解决方案。 -
我的两分钱:a。如果您总是需要排序格式的数据并且数据将是唯一的。你应该选择 SortedSet 而不是 ArrayList。为此,您需要在 Schedule 类中实现 Comparable 接口。使用以下模式解析日期 DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ", Locale.ENGLISH);
-
@akshayapandey,
SortedSet可能是一个好主意,具体取决于要求和设计。无论如何,请避免使用早已过时的SimpleDateFormat班级和朋友。现代和更好的等价物是DateTimeFormatter。
标签: java string list date arraylist