scala - 如何迭代列表以创建到 Map?
问题描述
我有两个函数可以迭代列表并从中制作地图。
def indexedShade: Map[String, Color] =
myTextFile.map(c => (c.toShade, c)).toMap
def indexedQuantity: Map[String, Color] =
myTextFile.map(c => (c.toQuantity, c)).toMap
由于我要迭代myTextFile
多次,我想只迭代一次并创建所需的两个地图。如何创建一个只迭代一次并返回两个 Map[String, Color]
的函数?
解决方案
如果你真的只需要迭代一次并map
即时构建,你可以这样做foldLeft
:
val (indexedShade, indexedQuantity) = myTextFile
.foldLeft((Map.empty[String, Color], Map.empty[String, Color]))((acc, cur) =>
(acc._1 + (cur.toShade -> cur), acc._2 + (cur.toQuantity -> cur)))
推荐阅读
- javascript - Angular Service Worker 迁移 5 - 6 离线无法正常工作(初始化失败)
- marklogic - 对 /v1/搜索结果进行排序
- java - Hibernate 找不到 persistence.xml 文件
- mysql - 如何在 MySQL 的 INSERT 语句中使用 SELECT MAX?
- xamarin.forms - 无法在 Visual Studio 的情节提要编辑器中添加图像来为 Xamarin.iOS 创建初始屏幕
- php - 如何在 Web 服务器上使用 PHP 分叉?
- javascript - 手动触发信号事件?
- julia - 在 Julia 中:Float64 和 BigFloat 的相等性
- gremlin - Janusgraph Gremlin 查询
- python - 在一个while循环中,你应该在哪里放置一个用于计数的变量?