具有不同类型数据的 LinkedHashMap

LinkedHashMap with different types of data

我有一个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));
  }

输出:

遍历地图后的地图值: 光盘:PARB id_inst:PE103AA01 cd_anul:

错误调用方法:generateReport

java.lang.ClassCastException: java.lang.Double cannot be cast to 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}

如何在没有 LinkedHashMap<String, Object>Hashmap 中使用 StringDouble

我不确定你的代码中是否有泛型类型 <String, Object>,如果没有,应该是 for (String key : hmap.keySet()) { 处有编译错误,否则,它运行良好。

您的问题不是 LinkedHashMap 不能同时包含 String 和 Double 实例。它实际上完全可以。问题是 您在迭代列表时对这些值做了什么。如果您尝试将该值用作 String 而它是 Double,您将得到 ClassCastException。如果您只需要一个关于实际对象 class 的 String 实例,您可以调用 toString() 像这样转换它:

Object o = hmap.get(key);
String stringVal = (o == null) ? null : o.toString()