αƞj*_*jiβ 2 dictionary for-loop scala intellij-idea
我正在尝试在获取列表中每个项目的结果后创建地图。这是我到目前为止尝试过的:
val sourceList: List[(Int, Int)] = ....
val resultMap: Map[Int, Int] = for(srcItem <- sourceList) {
val result: Int = someFunction(srcItem._1)
Map(srcItem._1 -> result)
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到了类型不匹配错误,IntelliJ而且我绝对没有在这里编写正确的语法。我不认为我可以使用,yield因为我不想要地图列表。使用 for 循环创建 Map 的正确方法是什么。有什么建议吗?
最简单的方法是从元组列表中创建映射:
val resultMap = sourceList.map(item => (item._1, someFunction(item._1))).toMap
Run Code Online (Sandbox Code Playgroud)
或者,以一元的方式:
val listOfTuples = for {
(value, _) <- sourceList
} yield (value, someFunction(value))
val resultMap = listOfTuples.toMap
Run Code Online (Sandbox Code Playgroud)
另外,如果你想避免的创建listOfTuples可以通过调用进行转型慵懒的一个.view上sourceList,然后调用toMap:
val resultMap = sourceList.view
.map(item => (item._1, someFunction(item._1)))
.toMap
Run Code Online (Sandbox Code Playgroud)
最后,如果你真的想避免生成额外的对象,你可以改用可变 Map并使用+=或将键和值附加到它.put
| 归档时间: |
|
| 查看次数: |
4566 次 |
| 最近记录: |