2016-08-16 25 views
0

在我的哈希如何處理哈希中的'任何'類型?

val envMap = collection.mutable.HashMap[String,Any]() 

我還有一個哈希是哈希

val servicesArray = scala.collection.mutable.ListBuffer[scala.collection.mutable.HashMap[String,Any]]() 
envMap += "services" -> servicesArray 

我試圖進入servicesArray從envMap

envMap.get("services").get.append(servicesMap) 

,但我的數組獲取此錯誤 錯誤:附加值不是任何成員

我應該明確地將envMap.get(「services」)轉換成列表,以便我可以追加到它,還是有更好的方法來處理這個問題?

當前返回值:

Any = ListBuffer(Map(One -> 1, Two -> ii)) 

我想要什麼:

scala.collection.mutable.ListBuffer[scala.collection.mutable.HashMap[String,Any]] = ListBuffer(Map(One -> 1, Two -> ii)) 
+0

是的,你應該明確地轉換envMap.get(「services」)。get.asInstanceOf [scala.collection.mutable.ListBuffer [scala.collection.mutable.HashMap [String,Any]]] –

回答

0

我想你應該不是這樣聲明:

val envMap = collection.mutable.HashMap[String,ListBuffer[scala.collection.mutable.HashMap[String,Any]]]() 

由於OP提到的,並不是所有的值都是列表,那麼你大概可以這樣做:

envMap.get("services").get match { 
    case s:ListBuffer[[scala.collection.mutable.HashMap[String,Any]]] => s.append(serviceMap) 
    case _: => // Or something else 
} 

您也可以將"services"抽象出來,以便它對所有鍵都有用。

+0

不是我所有的值都是列表 – chonglawr

+0

ok,在這種情況下,您可以使用以下內容:(編輯) – ryan

+0

此外,您可以使用'envMap(「services」)'而不是'envMap.get(「services」)。get'。如果你想防範不存在的密鑰,你可以稍做修改,在'match-case'中處理。 – ryan