簡體   English   中英

Java HashMap <String, String> 值具有LinkedHashMap

[英]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接口由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
}

支架放置。

嘗試

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

您必須在使用.get()之前進行.get()假設您的嘗試實際上是有效的,而這只是一個方括號)。

如果它是LinkedHashMap並且將其強制轉換為HashMap ,則將具有探針。

您可以將其視為Map

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM