0

所以我有一个奇怪的问题 aHashMap并且不确定如何访问该值。我HashMap从一个应该是HashMap<String, String>. 其中一个值实际上是 a LinkedHashMap。我试过铸造它,但因为它是一个HashMap<String, String>给我一个错误,这是不可能的。无论如何,有没有从 a that is中获得LinkedHashMap价值?HashMap<String, String>

我试过这个没有运气:((HashMap)userInfo.get("key")).get("key");

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

java.util.LinkedHashMap 不能转换为 java.lang.String

这看起来真的很难看,但我实际上可以通过以下方式将其从 HashMap 中取出:

(HashMap) ((HashMap)((HashMap)userInfo).get("picture")).get("data");

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

4

3 回答 3

1

括号放置。

尝试

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

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

于 2013-10-23T15:57:22.740 回答
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
}
于 2013-10-23T16:35:26.523 回答
0

如果它是 aLinkedHashMap并且您将其转换为 aHashMap您将遇到问题。

您可以改为将其视为Map

Map m = userInfo.get("key");
于 2013-10-23T15:58:30.023 回答