2012-01-20 43 views
0

我有一個列表「unSortedDateList」,其中日期存儲爲CSV。 日期被存儲在以下格式(MM/DD/YYYY) 1/10/2012,2011年2月10日,2011年1月9日 * (注:日期存儲爲逗號分隔值) *在排序日期方法中鑄造異常

我寫了一個函數,它從列表中獲取這些日期,並將它們排序在ASC中並存儲在sortedList中。

TreeMap<Date, Date> sortedMap = new TreeMap<Date, Date>(); 

    for (Date theDate : unSortedDateList) 
    { 
     sortedMap.put(theDate.getTime(), theDate); 
    } 
    List<Date> sortedList = (List<Date>) sortedMap.values(); 

程序拋出一個拋出異常。

你能幫我,我在這裏做錯了嗎?

+2

Stacktrace?你有沒有把數據解析成日期類型?然後你可以使用Collections.sort(unsortedDateList) –

+0

我相信theDate.getTime()返回一個長 –

+0

而TreeMap.values()不返回一個List。它返回一個集合。如果需要,可以從集合中創建一個新列表,但不要投射。 –

回答

2

爲什麼不排序與

Collections.sort(unsortedDateList) 

直接在列表?

2

您在日期字段中輸入了很長的值。這必須崩潰。

sortedMap.put(theDate.getTime(), theDate); //getTime() is long 

但你的地圖是Date

TreeMap<Date, Date> sortedMap 
+0

正確,我已將它更改爲theDate。仍然拋出一個例外。 – Namita

+0

爲什麼人們明顯不是問題的關鍵所在? –

+0

@STT LCU 它不是關於得分的。它關於在代碼中識別問題(甚至沒有被問到)。 – Namita

1

引用Java文檔的SE6:

值()返回此映射中包含的值的Collection視圖。

它不返回一個列表:列表是一個集合,但反過來不一定是正確的。

編輯:下次請提供一個堆棧跟蹤和發生錯誤的確切行。