具有不同类型数据的 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
中使用 String
和 Double
?
我不确定你的代码中是否有泛型类型 <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()
我有一个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
中使用 String
和 Double
?
我不确定你的代码中是否有泛型类型 <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()