簡體   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