我有LinkedHashMap
我的代码
LinkedHashMap<String, String> hmap = (LinkedHashMap<String, String>)data[0];
System.out.println("Contents of LinkedHashMap : " + hmap);
System.out.println("\nValues of map after iterating over it : ");
for (String key : hmap.keySet()) {
System.out.println(key + ":\t" + hmap.get(key));
}
输出
迭代后的map值: cd:PARB id_inst:PE103AA01 cd_anul:
调用方法时出错:generateReport
java.lang.ClassCastException:java.lang.Double无法强制转换为java.lang.String
LinkedHashMap的内容:
{cd=PARB,id_inst=PE103AA01, cd_anul=, mnt=276562.5, dt_den_theo=2012-01-24 00:00:00, logo=PARB.bmp, id=ISI.model.ParamRecord-1}
如何在String
Double
之内使用Hashmap
和LinkedHashMap<String, Object>
?
答案 0 :(得分:1)
我不确定您的代码是否包含genric类型<String, Object>
,如果不是,for (String key : hmap.keySet()) {
应该有compilaton错误,否则效果很好。
答案 1 :(得分:1)
您的问题不是LinkedHashMap不能同时包含String和Double实例。它实际上完全可以。迭代列表时,问题是 您正在使用这些值。如果在Double为Double时尝试将该值用作String,则会得到ClassCastException。如果你只需要一个关于实际对象类的String实例,你可以调用 toString()来转换它,如下所示:
var leftPos = $("#element")[0].getBoundingClientRect().left + $(window)['scrollLeft']();
var rightPos = $("#element")[0].getBoundingClientRect().right + $(window)['scrollLeft']();
var topPos = $("#element")[0].getBoundingClientRect().top + $(window)['scrollTop']();
var bottomPos= $("#element")[0].getBoundingClientRect().bottom + $(window)['scrollTop']();