2016-04-26 28 views

Antwort

3

können Sie es wie folgt tun:

val xs = Array("a", "b", "c", "c", "a", "b", "c", "b", "b", "a") 
xs.groupBy(identity).mapValues(_.length) 

oder so:

xs.foldLeft(Map[String, Int]().withDefaultValue(0))((acc, x) => acc + (x -> (acc(x) + 1))) 

oder könnten Sie interne Veränderlichkeit verwenden Kopieren zu verhindern, wenn Sie effizienter sein wollen:

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) 
} 
+0

Konnten Sie es mit xs-Parameter vom Typ DataFrame (eine Spalte) ohne collect() schreiben? Es ist mir nicht gelungen, foreach für einen DataFrame zu verwenden und die Ergebnis-Map zu aktualisieren. –

Verwandte Themen