Java 具有不同数据类型的LinkedHashMap

Java 具有不同数据类型的LinkedHashMap,java,linkedhashmap,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 (Stri

我有一个
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));
  }
LinkedHashMap hmap=(LinkedHashMap)数据[0];
System.out.println(“LinkedHashMap的内容:+hmap”);
System.out.println(“\n迭代后映射的值:”;
for(字符串键:hmap.keySet()){
System.out.println(key+“:\t”+hmap.get(key));
}
输出:

迭代映射后的映射值: cd:PARB id_inst:PE103AA01 光盘:

调用方法时出错: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}


如果没有
LinkedHashMap
,我如何在我的
Hashmap
中使用
String
Double

我不确定您的代码中是否有Generic类型
,如果没有,则在
处应该有编译错误(字符串键:hmap.keySet()){
,否则,它工作得很好。

你的问题不是LinkedHashMap不能同时包含字符串和双实例。它实际上完全可以。问题是当你迭代列表时,你对这些值做了什么。如果你试图在值为双实例时将其作为字符串使用,你会得到ClassCastException。如果u need是关于实际对象类的字符串实例,您可以调用toString()将其转换为:

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

正如错误所说,您正试图在某个位置将双精度转换为字符串。使用您提供的一段代码,无法找到此位置。在映射内容中看不到任何
Double
键是的,没错,我因此得到一个编译错误。我应该如何继续?您必须将其更改为
for(对象键:hmap.keySet()){
,如果以后想使用它,应该将其转换为字符串
String keyStr=(String)key