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
。