[英]Add key-value pair to a HashMap with an existing key (Scala)
我有以下HashMap
import collection.mutable.HashMap
val map = mutable.HashMap("key" -> mutable.HashMap("key" -> "value",
"key2" -> "value2"),
"key2" -> mutable.HashMap("key" -> "value",
"key2" -> "value2"))
我怎樣才能使地圖看起來像
val map = mutable.HashMap("key" -> mutable.HashMap("key" -> "value",
"key2" -> "value2"),
"key2" -> mutable.HashMap("key" -> "value",
"key2" -> "value2",
"key3" -> "value3"),
"key3" -> mutable.HashMap("key" -> "value"))
在我的腦海中會出現類似這樣的情況,但是我找不到正確的方法。
map.get("key2").put("key3" -> "value3")
map.put("key3" -> ("key" -> "value3"))
最終,我想要一個易於轉換為Json的結構
put
方法不適用於key- key -> value
形式的參數。 您必須使用+
-operator。 此外, .get(key)
返回一個Option
,因此您必須對其進行.map
:
map.get("key2").map(_ + "key3" -> "value3")
map += ("key3" -> mutable.HashMap("key" -> "value3"))
同樣在第二行中,您需要顯式創建一個HashMap,否則它將與地圖的類型( [String, HashMap]
)不匹配。
這應該可以回答您的問題,但是Yuval Itzchakov是正確的,如果您的對象具有固定的結構,那么使用案例類和JSON序列化程序(例如Jackson或Json4s)可能是一個好主意。
你不能使用
map.get("key2").put("key3" -> "value3")
因為它返回Option
並且需要兩個參數,而不是元組。 您首先需要通過調用get
來解開值,然后像這樣調用它:
map.get("key2").get.put("key3", "value3")
但是,有更簡單的方法可以向可變映射添加新值:
map("key3") = mutable.HashMap("key" -> "value", "key2" -> "value2")
map("key2")("key3") = "value3"
// or
map += ("key3" -> mutable.HashMap("key" -> "value", "key2" -> "value2"))
map("key2") += ("key3" -> "value3")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.