这对我来说太棘手了,我做不好。
我有一个 TreeMap<Double, (user-defined)Object> ,其中我带了一个潜艇:
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) 我得到以下错误:
(TreeMap)
java.lang.ClassCastException: java.util.TreeMap$SubMap
任何帮助都很好。
问题正是错误所说的:返回的submap是 不 标准 TreeMap ,它是实现定义的内部类的实例。如果你看一下 subMap :
TreeMap
subMap
public SortedMap subMap(Object fromKey, Object toKey)
它只保证返回的对象实现 SortedMap 接口,所以这是唯一可以安全地转换到的对象。
SortedMap
也就是说,没有理由真的投到 树图 因为它不提供任何附加功能 分类地图 做。
树图
分类地图