use*_*778 3 dictionary scala list
我有一个列表(列表的大小是可变的):
val ids = List(7, 8, 9)
Run Code Online (Sandbox Code Playgroud)
并希望获得以下地图:
val result= Map("foo:7:bar" -> "val1",
"foo:8:bar" -> "val1",
"foo:9:bar" -> "val1")
Run Code Online (Sandbox Code Playgroud)
映射中的所有内容都是硬编码的,除了id和值对于每个人来说都是相同的,但是映射必须是可变的,我想稍后再更新其值之一:
result("foo:8:bar") = "val2"
val result= Map("foo:7:bar" -> "val1",
"foo:8:bar" -> "val2",
"foo:9:bar" -> "val1")
Run Code Online (Sandbox Code Playgroud)
您可以这样操作:首先在列表上映射以生成元组列表,然后调用toMap结果,这将使元组成为不可变Map的:
val m = ids.map(id => ("foo:" + id + ":bar", "val1")).toMap
Run Code Online (Sandbox Code Playgroud)
然后不可改变转换Map为可变的Map,例如像解释在这里:
val mm = collection.mutable.Map(m.toSeq: _*)
Run Code Online (Sandbox Code Playgroud)
编辑 - Map注释者注意到,中间不可变是不必要的,您也可以这样做:
val mm = collection.mutable.Map(ids.map(id => ("foo:" + id + ":bar", "val1")): _*)
Run Code Online (Sandbox Code Playgroud)