2016-05-11 4 views
0

例えばフォーム(key, (index, rating))のエントリを持つ配列、を考える:私はこの結果を得るにはスカラ:より良いGROUPBYアプローチ

Array((key1, Array((index1, rating1), (index2, rating2), ...), (key2, Array((index1, rating1), (index2, rating2), ...)), ...) 

にこれを変換したい

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))) 

、私は次のことをやりましたコード:

私に与え
samp.groupBy(_._1).map{ case (k, v) => (k, v.map(_._2)) }.toArray 

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)))) 

コードで私が望むものが得られますが、私はスカラをかなり新しくしているので、これを行うためのよりよい方法があるかどうかを知りたいだけです。ありがとう!

答えて

5

多分ちょうどmapValuesを使用します。

samp.groupBy(_._1).mapValues(_.map(_._2)).toArray 
関連する問題