jti*_*usj 0 functional-programming scala
给定一个包含表单条目的数组(key, (index, rating)),例如:
val samp = Array((0, (1, 0.005)), (1, (1, 0.306)), (0, (0, 0.231)), (2, (2, 0.908)), (0, (2, 0.542)), (2, (1, 0.091)))
Run Code Online (Sandbox Code Playgroud)
我想将其转化为
Array((key1, Array((index1, rating1), (index2, rating2), ...), (key2, Array((index1, rating1), (index2, rating2), ...)), ...)
Run Code Online (Sandbox Code Playgroud)
为了得到这个结果,我做了以下代码:
samp.groupBy(_._1).map{ case (k, v) => (k, v.map(_._2)) }.toArray
Run Code Online (Sandbox Code Playgroud)
这给了我:
Array((2,Array((2,0.908), (1,0.091))), (1,Array((1,0.306))), (0,Array((1,0.005), (0,0.231), (2,0.542))))
Run Code Online (Sandbox Code Playgroud)
代码给了我我想要的东西,但我只是想知道是否有更好的方法来做这个,因为我对scala相当新.谢谢!
也许只是使用mapValues:
samp.groupBy(_._1).mapValues(_.map(_._2)).toArray
Run Code Online (Sandbox Code Playgroud)