Scala-分为计数列表和元素列表

Alg*_*man 0 functional-programming scala

假设我有这样的Scala列表:

val mylist = List(4,2,5,6,4,4,2,6,5,6,6,2,5,4,4)
Run Code Online (Sandbox Code Playgroud)

如何将其转换为计数列表和元素列表?例如,我想转换mylist为:

val count = List(3,5,3,4)
val elements = List(2,4,5,6)
Run Code Online (Sandbox Code Playgroud)

这意味着,在中mylist,我有3个出现2,有5个出现4,依此类推。

在过程中,这很容易,因为我可以制作两个空列表(用于计数和元素)并在进行迭代时填充它们。但是,我不知道如何在Scala中实现这一目标。

igo*_*kin 5

可以说是最短的版本:

 val elements = mylist.distinct
 val count = elements map (e => mylist.count(_ == e))
Run Code Online (Sandbox Code Playgroud)