[英]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.