scala - 如何从 Scala 中的向量创建 HashMap
问题描述
我有这个向量:
val imageIds = Vector(
"XXXX1",
"XXXX2",
"XXXX3"
)
我目前使用以下方法创建一个数组:
def makeTheImageDataArray: Vector[JsObject] = {
imageIds.map(SingleImageData(_, "theURL", "theStatus").asJsObject)
}
这个案例类:
case class SingleImageData(ImageId: String, URL: String, Status: String) {
def imageId: String = ImageId
def getURL: String = URL
def status: String = Status
def asJsObject: JsObject = JsObject(
"ImageId" -> JsString(imageId),
"URL" -> JsString(getURL),
"Status" -> JsString(status)
)
}
产生:
Vector(
{"ImageId":"XXXX1","URL":"theURL","Status":"theStatus"},
{"ImageId":"XXXX2","URL":"theURL","Status":"theStatus"},
{"ImageId":"XXXX3","URL":"theURL","Status":"theStatus"}
)
我不想生成一个向量,而是创建一个 HashMap,以 ImageId 作为键,即:
Map(
XXX1 -> {"URL":"theURL","Status":"theStatus"},
XXX2 -> {"URL":"theURL","Status":"theStatus"},
XXX3 -> {"URL":"theURL","Status":"theStatus"}
)
谁能告诉我如何做到这一点?
解决方案
"ImageId" -> JsString(imageId)
从中删除asJsObject
,然后
imageIds.map(id => id -> SingleImageData(id, "theURL", "theStatus").asJsObject).toMap
或者如果 SingleImageData 不需要知道 id,则从 SingleImageData 中完全删除 ImageID,并且
imageIds.map(_ -> SingleImageData("theURL", "theStatus").asJsObject).toMap
推荐阅读
- git - 如何更改 Jenkins 管道脚本中的默认超时以克隆 git repo
- visual-studio-code - ipv6 被 vscode 视为主机名
- blockchain - 在私有 Geth 网络上部署 Raiden 合约和启动 Raiden 客户端的问题
- java - 正则表达式以获取具有相同开始匹配和不同结束匹配的条目
- blockchain - Hyperledger Fabric:./startFabric.sh javascript 错误
- javascript - 如何在不影响实例/网络速度的情况下打开多个 puppeteer 实例
- node.js - 在本地开发机器上测试 HTTPS 网站
- javascript - InfluxDB Int 点被保存为双精度
- git - 保持回购中的分叉回购是最新的
- google-api - 从 Google 文档中提取文本并获取特定页面