如何在Scala列表中找到重复的项目?

cro*_*ies 4 scala

我有一个Scala列表,其中包含一些重复的数字。我想计算一个特定数字重复出现的次数。例如:

val list = List(1,2,3,3,4,2,8,4,3,3,5)
val repeats = list.takeWhile(_ == List(3,3)).size
Run Code Online (Sandbox Code Playgroud)

repeats将相等2

显然,以上内容是伪代码,由于表示整数,takeWhile因此找不到两个重复的3s _。我尝试将两者混合takeWhiletake(2)但收效甚微。我还从“ 如何在Scala列表中查找可重复元素的数量”中引用了代码,但看来作者正在寻求实现不同的目标。

谢谢你的帮助。

tho*_*dge 5

在这种情况下,它将起作用:

val repeats = list.sliding(2).count(_.forall(_ == 3))
Run Code Online (Sandbox Code Playgroud)

slide(2)方法为您提供元素和后继元素列表的迭代器,然后我们仅计算这两个元素等于3的位置。

问题是它是否为List(3,3,3)创建正确的结果?您要重复两次还是仅重复一次。