我有一个map(String, LinkedList( mp.这对应于如下表:
Name Date Dept
Tony 4/1/2014 55125
Bob 3/2/2013 54112
Jill 7/2/2014 55265
(我只是为这个例子编造了这些。 第一行(名称,日期,部门(是标题,对应于映射中的键值(例如,您可以执行mp.get("名称"(。 返回的链表 名称为 ,日期为 <4/1/2014、3/2/2013、7/2/2014>部门为 <55125、54112、55265> 等。
我需要获取一个值的列表,然后对其进行排序。 对于名称和部门,我相信我可以做一个 Collections.sort((,但这不适用于日期。 如果日期是 yyyymmdd,它会起作用,但日期是 mm/dd/yyyy,这不能保证正确排序,通常也不会。 我想我可以处理每个条目并将其更改为 yyyymmdd,但有些字段将是空白的(或者可能是空的,但我认为是空白的(。
我可以很容易地确定何时正常排序以及何时按日期排序。只是不确定如何使用 Collections.sort(( 或其他东西对日期列表进行排序。 谁能帮忙?
Collections.Sort 方法允许您(可选(指定自己的比较器。在您的情况下,当您对日期列进行排序时,您需要提供自己的比较器。
如果您使用的是Java 8,那么代码将如下所示:
Collections.sort(dataMap.get("Date"), (date1, date2) -> compareDates(date1, date2));
然后,compareDates 方法需要能够处理空值,并且需要将日期部分和返回从 date1 到 date2 的天数分开。您可以轻松地使用 java.util.Date 对象来执行此操作 - 只需转换日期(可能使用 DataFormat(,然后进行比较。