Java HashMap <string,string =“”>的LinkedHashMap值为</string,>

时间:2013-10-23 15:55:38

标签: java hashmap

所以我对HashMap有一个奇怪的问题,并且不确定如何访问该值。我从一个假设为HashMap的API返回给我HashMap<String, String>。其中一个值实际上是LinkedHashMap。我已经尝试过它了,但由于它是HashMap <String, String>,它会给我一个错误,这是不可能的。无论如何要从[{1}} LinkedHashMap中获得HashMap值?

我试过这个没有运气:<String, String>

((HashMap)userInfo.get("key")).get("key");

java.util.LinkedHashMap无法强制转换为java.lang.String

这看起来真的很难看,但我实际上可以用HashMap把它弄出来:

     Could not complete request <java.lang.ClassCastException: 
java.util.LinkedHashMap cannot be cast to java.lang.String>java.lang.ClassCastException:

感谢Jeroen让我走上了正确的道路。

3 个答案:

答案 0 :(得分:1)

首先将类型化地图转换为无类型地图,然后检查每个值的类型。 Map接口由HashMapLinkedHashMap类实现,因此您很可能希望使用它而不是更具体的类型。

HashMap<String, String> typedMap = ...
Map untypedMap = (Map) typedMap;
Object mapValue = untypedMap.get("key");

if(mapValue instanceof Map) {
  // handle as Map
}

if(mapValue instanceof String) {
  // handle as String
}

答案 1 :(得分:0)

放置括号。

尝试

(((HashMap)userInfo).get("key")).get("key");

你必须在使用.get()之前进行投射(假设你的尝试实际上是有效的,这只是括号内的问题)。

答案 2 :(得分:0)

如果是LinkedHashMap并将其投放到HashMap,则会出现问题。

您可以将其视为Map

Map m = userInfo.get("key");