首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cast TreeMap.Submap return: SortedMap,back to TreeMap

Cast TreeMap.Submap return: SortedMap,back to TreeMap
EN

Stack Overflow用户
提问于 2010-11-22 08:06:30
回答 1查看 1.9K关注 0票数 1

对于我来说,这似乎太棘手了,我无法正确地做到这一点。

我有一个TreeMap<Double, (user-defined)Object>,我正在获取它的一个子图:

代码语言:javascript
复制
        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)时,我得到了以下错误:

代码语言:javascript
复制
  java.lang.ClassCastException: java.util.TreeMap$SubMap

任何帮助都是最好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-22 08:18:32

问题就是这个错误所说的:返回子映射是a标准TreeMap,它是一个实现定义的内部类的实例。如果你看一下subMap的声明

代码语言:javascript
复制
public SortedMap subMap(Object fromKey, Object toKey)

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

也就是说,实际上没有理由强制转换为TreeMap,因为它并没有提供比SortedMap所做的任何额外的功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4241196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档