Scala:如何从集合[K]创建地图[K,V],从K到V的函数?
发布时间:2020-12-16 09:17:32 所属栏目:安全 来源:网络整理
导读:从集合[K]创建地图[K,V]和从K到V的功能的最佳方法是什么? 例如,假设我有 scala val s = Set(2,3,5)s: scala.collection.immutable.Set[Int] = Set(2,5) 和 scala def func(i: Int) = "" + i + ifunc: (i: Int)java.lang.String 什么是创建Map [Int,String](
从集合[K]创建地图[K,V]和从K到V的功能的最佳方法是什么?
例如,假设我有 scala> val s = Set(2,3,5) s: scala.collection.immutable.Set[Int] = Set(2,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 只要您避免构建中间数据结构,就好像它们都是一样的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |