使用循环在Scala中创建贴图
我试图在得到列表中每个项目的结果后创建一个映射。以下是我迄今为止所做的尝试:使用循环在Scala中创建贴图,scala,for-loop,dictionary,intellij-idea,Scala,For Loop,Dictionary,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) } val sourceList:List[(Int,Int)
val sourceList: List[(Int, Int)] = ....
val resultMap: Map[Int, Int] = for(srcItem <- sourceList) {
val result: Int = someFunction(srcItem._1)
Map(srcItem._1 -> result)
}
val sourceList:List[(Int,Int)]=。。。。
val resultMap:Map[Int,Int]=for(srcItem结果)
}
但是我在
IntelliJ
中遇到了类型不匹配错误,我在这里肯定没有编写正确的语法。我认为我不能使用yield
,因为我不想要地图列表。使用for循环创建贴图的正确方法是什么。有什么建议吗 最简单的方法是从元组列表中创建映射:
val resultMap = sourceList.map(item => (item._1, someFunction(item._1))).toMap
或者,以一元的方式:
val listOfTuples = for {
(value, _) <- sourceList
} yield (value, someFunction(value))
val resultMap = listOfTuples.toMap
最后,如果您真的想避免生成额外的对象,您可以改为使用,并使用+=
或.put
val resultMap = sourceList.view
.map(item => (item._1, someFunction(item._1)))
.toMap