2013-04-15 40 views
0

是否有一些包像公地IO,jodatime等,任何實用工具類,其中一個可以傳遞像一個列表:排序路徑 - 實用方法

March/Invoice - 00000020 - 01.03.2013.xls 
March/Invoice - 00000021 - 08.03.2013.xls 
April/Invoice - 00000025 - 05.04.2013.xls 
January/Invoice - 00000015 - 25.01.2013.xls 

,並獲得由像幾個月來分類的路徑:

January/Invoice - 00000015 - 25.01.2013.xls 
March/Invoice - 00000020 - 01.03.2013.xls 
March/Invoice - 00000021 - 08.03.2013.xls 
April/Invoice - 00000025 - 05.04.2013.xls 

我們或許可以寫一個Comparator我們自己,但我希望這樣的事情已經存在於一些第三方庫?

+0

不是我所知道的。看起來很簡單,但有一些正則表達式和日曆。 – radai

+2

您可以自己編寫一個比較器 – BlackJoker

回答

1

像這樣的事情是不是搜索任何第三方庫更好,我相信:

final Map<String, Integer> monthMap = new LinkedHashMap<String, Integer>(); 
// Initialize it with all the months and corresponding index like: 
// (January,1), (February,2), etc... 
monthMap.put("January", 1); 
monthMap.put("February", 2); 
monthMap.put("March", 3); 
monthMap.put("April", 4); 
monthMap.put("May", 5); 
monthMap.put("June", 6); 
monthMap.put("July", 7); 
monthMap.put("August", 8); 
monthMap.put("September", 9); 
monthMap.put("October", 10); 
monthMap.put("November", 11); 
monthMap.put("December", 12); 

Collections.sort(list, new Comparator<String>() 
{ 
    @Override 
    public int compare(String a, String b) 
    { 
     String first = a.substring(0, a.indexOf(File.separatorChar)); 
     String second = b.substring(0, b.indexOf(File.separatorChar)); 

     return monthMap.get(first).compareTo(monthMap.get(second)); 
    } 
}); 

我相信有比這更好的解決方案,它只是一個指針。

+0

感謝您的粗略示例。我有點重新工作,我希望你不介意。 – carlspring