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