Traversable[T] をカウント付きの Map[T, Int] ヒストグラムに変換したいと考えています。結果を、私がやることで得られるものと一致する不変の Map にしたいと思います:
traversable.groupBy(_).mapValues(_.length)
しかし、これは空間的にも時間的にも効率的ではないように見えます...トラバーサブルgroupBy
内のすべての要素への参照を維持するため、これは、一意のキーの小さなセットを持つ大きなトラバーサブルではパフォーマンスが低下します。私は本当にこのようなものがもっと欲しいです:
def histogram[T](ts : Traversable[T]) : Map[T, Int] = {
val map = new collection.mutable.HashMap[T, Int].withDefaultValue(0)
ts.foreach { map(_) += 1 }
map.toMap
}
この結果が得られるライブラリ メソッドはありますか (理想的には、並列コレクションでうまく機能します)。