gpt4 book ai didi

Scala:如何从 Set[K] 创建 Map[K,V] 和从 K 到 V 的函数?

转载 作者:行者123 更新时间:2023-12-03 21:01:55 24 4
gpt4 key购买 nike

创建 Map[K,V] 的最佳方式是什么?来自 Set[K]和功能来自 KV ?

例如,假设我有

scala> val s = Set(2, 3, 5)
s: scala.collection.immutable.Set[Int] = Set(2, 3, 5)


scala> def func(i: Int) = "" + i + i
func: (i: Int)java.lang.String

创建 Map[Int, String](2 -> "22", 3 -> "33", 5 -> "55") 的最简单方法是什么?

最佳答案

您可以使用 foldLeft :

val func2 = (r: Map[Int,String], i: Int) => r + (i -> func(i))
s.foldLeft(Map.empty[Int,String])(func2)

这将比 Jesper 的解决方案表现得更好,因为 foldLeft构造 Map一口气。 Jesper 的代码首先创建了一个中间数据结构,然后需要将其转换为最终的 Map .

更新:我写了一个 micro benchmark测试每个答案的速度:
Jesper (original): 35s 738ms
Jesper (improved): 11s 618ms
dbyrne: 11s 906ms
Rex Kerr: 12s 206ms
Eastsun: 11s 988ms

只要您避免构建中间数据结构,它们看起来都差不多。

关于Scala:如何从 Set[K] 创建 Map[K,V] 和从 K 到 V 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com