1

这对我来说似乎太棘手了,无法正确执行此操作。

我有一个TreeMap<Double, (user-defined)Object>,我正在拍摄一个子图:

        public static reqObj assignObj(reqObj vArg, int startDate, int endDate){
                reqObj vOut=new reqObj();



                if (keyAt(vArg.requestObject,startDate)>-1 && keyAt(vArg.requestObject,endDate)>-1){
                    System.err.println(keyAt(vArg.requestObject,startDate));
                    System.err.println(keyAt(vArg.requestObject,endDate));

                    //vOut.requestObject=(TreeMap<Double, dayObj>)

                    vArg.requestObject.subMap(
                            keyAt(vArg.requestObject,startDate),
                            keyAt(vArg.requestObject,endDate));

                }

                return vOut;
        } 

这正如预期的那样工作,但是当我将排序后的地图转换回时,(TreeMap)我收到以下错误:

  java.lang.ClassCastException: java.util.TreeMap$SubMap

任何帮助都会很棒。

4

1 回答 1

3

问题正是错误所说的:返回的子图不是标准TreeMap,它是实现定义的内部类的实例。如果您查看以下声明subMap

public SortedMap subMap(Object fromKey, Object toKey)

它所保证的只是返回的对象实现了SortedMap接口,所以这是你唯一可以安全地转换到的东西。

话虽如此,实际上没有理由强制转换为 a TreeMap,因为它没有提供比 aSortedMap所做的任何附加功能。

于 2010-11-22T00:18:31.837 回答