蒙特卡洛贝叶斯实验中TreeMap<Double,Double> put方法参数不匹配报错求助
解决TreeMap<Double,Double> put方法的类型不匹配报错
报错原因
TreeMap<Double, Double>的put方法要求键和值都为Double包装类型,但你传入的第一个参数是int类型(比如time()或getCurrentIteration()的返回值),Java无法自动将int直接装箱为Double,因此触发类型不匹配错误。
解决方案
方法一:显式转换int为Double
修改两处put方法的调用代码,将int类型的键强制转为double:
- 原代码:
incidences1.put(time(), Incidence);
修改后:incidences1.put((double) time(), Incidence); - 原代码:
root.incidences1.put(getCurrentIteration(), root.Incidence_Plot);
修改后:root.incidences1.put((double) getCurrentIteration(), root.Incidence_Plot);
方法二:修改TreeMap泛型类型(如果业务允许)
如果你的键本质是整数类型(比如迭代次数、时间步长),可以直接调整incidences1的泛型定义:
原定义:TreeMap<Double,Double> incidences1;
修改后:TreeMap<Integer,Double> incidences1;
这样传入int类型的键时,Java会自动装箱为Integer,无需额外转换。
选择建议
优先用方法一,能保持和你代码中IncidenceDS.add(time(), Incidence);的类型一致性;如果迭代次数/时间步本身是整数且不需要浮点型键,方法二更贴合数据实际类型。
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

