2015-04-02 35 views
-5

我的數組列表中有文檔編號並創建日期,日期格式爲String。我必須用最新的創建日期對arrayList進行排序。提前致謝。將數組列表按字符串格式排序,日期格式爲

日期(字符串)格式:1/1/2015

+0

它與JSF有什麼關係? – Tiny 2015-04-02 05:32:10

+0

你到目前爲止嘗試過什麼嗎?你熟悉'比較器'的用法嗎? – Ria 2015-04-02 05:40:20

+0

不要在Java端將所有東西串聯起來。這隻會讓人頭痛。只需將日期存儲爲日期,而不是字符串。字符串只能用於人類的輸入(並且應在投入模型之前立即轉換)或將其呈現給人類(並且應僅在呈現期間轉換)。 – BalusC 2015-04-02 06:16:12

回答

0

public static void main(String [] args){list} dateList = new ArrayList();

 dateList.add(convertToString("1/1/2015")); 
     dateList.add(convertToString("2/1/2015")); 
     dateList.add(convertToString("1/2/2015")); 
     dateList.add(convertToString("3/1/2015")); 
     dateList.add(convertToString("1/4/2015")); 
     dateList.add(convertToString("4/1/2015")); 
     dateList.add(convertToString("2/2/2015")); 
     dateList.add(convertToString("2/4/2015")); 
     dateList.add(convertToString("4/4/2015")); 

     Collections.sort(dateList); 
     System.out.println(dateList); 

    } 

    public static String convertToString(String dateInString){ 

     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     Date date = null; 
     try { 

      date = formatter.parse(dateInString); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return formatter.format(date); 
    } 

請看看上面的代碼,我認爲它應該可以解決你的問題。

0

這是一個使用apache-commons DateUtils來實現它的非常簡單的方法。

List<String> dates = new ArrayList<String>(); 
    dates.add("3/1/2015"); 
    dates.add("1/4/2015"); 
    dates.add("1/1/2015"); 
    final String[] formats = new String[] { "dd/MM/yyyy" }; 
    Collections.sort(dates, new Comparator<String>() { 

     @Override 
     public int compare(String d1, String d2) { 
      try { 
       Date date1 = DateUtils.parseDate(d1, formats); 
       Date date2 = DateUtils.parseDate(d2, formats); 
       return date1.compareTo(date2); 
      } catch (ParseException e) { 
       // do something to treat this error 
       return 1; 
      } 
     } 
    });