所以我对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让我走上了正确的道路。
答案 0 :(得分:1)
首先将类型化地图转换为无类型地图,然后检查每个值的类型。 Map接口由HashMap和LinkedHashMap类实现,因此您很可能希望使用它而不是更具体的类型。
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");