繁体   English   中英

在Java中以不同方式对数组进行排序

[英]Sorting arrays different ways in Java

我有一个map(String,LinkedList)mp。 这对应于这样的表:

Name   Date      Dept
Tony   4/1/2014  55125
Bob    3/2/2013  54112
Jill   7/2/2014  55265

(我只是在此示例中进行了弥补。第一行(名称,日期,部门)是标题,并对应于地图中的键值(例如,您执行mp.get(“ Name”))。为Name返回的链接列表为,日期为<4/1 / 2014、3 / 2 / 2013、7 / 2/2014>,部门为<55125、54112、55265>等。

我需要获取值列表,然后对其进行排序。 对于Name和Dept,我相信我可以做一个Collections.sort(),但这对于日期来说是行不通的。 如果date为yyyymmdd,则可以使用,但是date为mm / dd / yyyy,则不能保证正确排序,通常不会。 我想我可以处理每个条目并将其更改为yyyymmdd,但是某些字段将为空白(或者为null,但我认为是空白)。

我可以轻松确定何时正常排序以及何时按日期排序。 只是不确定如何使用Collections.sort()或其他方式对日期列表进行排序。 有人可以帮忙吗?

Collections.Sort方法允许您(可选)指定自己的Comparator。 在您的情况下,当您对日期列进行排序时,您将需要提供自己的比较器。

如果您使用的是Java 8,则代码将如下所示:

Collections.sort(dataMap.get("Date"), (date1, date2) -> compareDates(date1, date2));

然后,compareDates方法将需要能够处理空值,并且需要拆开日期部分并返回从date1到date2的天数。 您可以轻松地使用java.util.Date对象来执行此操作-只需转换日期(可能使用DataFormat),然后进行比较即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM