[英]Java HashMap<String, String> has LinkedHashMap in value
因此,我對HashMap
有一個奇怪的問題,不確定如何訪問該值。 我有一個從HashMap
返回的HashMap
,該API應該是HashMap<String, String>
。 值之一實際上是LinkedHashMap
。 我已經嘗試過強制轉換,但是由於它是一個HashMap
,它是<String, String>
所以給我一個錯誤,那就是不可能。 無論如何,是否可以從<String, String>
的HashMap
中獲取LinkedHashMap
值?
我沒有運氣嘗試過這個: ((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將我送往正確的道路。
首先將類型化映射轉換為非類型化映射,然后檢查每個值的類型。 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
}
支架放置。
嘗試
(((HashMap)userInfo).get("key")).get("key");
您必須在使用.get()
之前進行.get()
假設您的嘗試實際上是有效的,而這只是一個方括號)。
如果它是LinkedHashMap
並且將其強制轉換為HashMap
,則將具有探針。
您可以將其視為Map
:
Map m = userInfo.get("key");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.