LinkedHashMap具有不同类型的数据

时间:2015-07-14 13:06:18

标签: java linkedhashmap

我有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之内使用HashmapLinkedHashMap<String, Object>

2 个答案:

答案 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']();