排序日期方法中的Cast Exception

时间:2012-01-20 07:40:22

标签: java treemap

我有一个列表“unSortedDateList”,其中日期存储为CSV。 日期以下列格式存储(MM / dd / yyyy) 2012年1月10日,2011年2月10日,2011年1月9日 * (注意:日期存储为COMMA分离值) *

我编写了一个函数,它从列表中获取这些日期并在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();

该程序正在抛出强制转换异常。

你能帮我解决一下我在做错的事吗?

3 个答案:

答案 0 :(得分:2)

您在日期字段中输入了较长的值。那不得不崩溃。

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

但您的地图为Date

TreeMap<Date, Date> sortedMap

答案 1 :(得分:2)

为什么不用

对列表进行排序
Collections.sort(unsortedDateList) 

直接?

答案 2 :(得分:1)

引用SE6的java文档:

  

values()返回此映射中包含的值的Collection视图。

它不返回List:列表是Collection,但反过来不一定是真的。

编辑:下次请提供一个堆栈跟踪以及发生错误的确切行。