0
Scala配列内の各個別要素のカウントを見つける最も効率的な実装は何ですか?Scala配列の個々の要素の数を調べる?
Scala配列内の各個別要素のカウントを見つける最も効率的な実装は何ですか?Scala配列の個々の要素の数を調べる?
あなたはこのようにそれを行うことができます。
val xs = Array("a", "b", "c", "c", "a", "b", "c", "b", "b", "a")
xs.groupBy(identity).mapValues(_.length)
またはこのような:
xs.foldLeft(Map[String, Int]().withDefaultValue(0))((acc, x) => acc + (x -> (acc(x) + 1)))
またはあなたがより効率的になりたい場合は、コピーを防止するために、内部可変性を使用することができます。
def countElems[A](xs: Array[A]): Map[A, Int] = {
val result = collection.mutable.Map[A, Int]().withDefaultValue(0)
xs foreach { x => result += (x -> (result(x) + 1)) }
result.toMap // this copies and makes it immutable, O(number of distinct elements)
}
collect()を使用せずにDataFrame(1列)型のxsパラメータで記述できますか?私はDataFrameでforeachを使用して結果マップを更新できませんでした。 –