给定List[Int]
Scala 中的 a ,我希望得到至少出现次数Set[Int]
的所有s 。我可以使用or , then来做到这一点。例如:Int
thresh
groupBy
foldLeft
filter
val thresh = 3
val myList = List(1,2,3,2,1,4,3,2,1)
myList.foldLeft(Map[Int,Int]()){case(m, i) => m + (i -> (m.getOrElse(i, 0) + 1))}.filter(_._2 >= thresh).keys
会给Set(1,2)
。
现在假设List[Int]
非常大。很难说有多大,但无论如何这似乎很浪费,因为我不关心每个Int
s 频率,我只关心它们是否至少是thresh
. 一旦它通过thresh
了,就不需要再检查了,只需Int
将Set[Int]
.
问题是:对于一个非常大的,我可以更有效地做到这一点List[Int]
,
a) 如果我需要一个真实、准确的结果(没有出错的余地)
b) 如果结果可以是近似的,例如通过使用一些散列技巧或布隆过滤器,其中Set[Int]
可能包含一些误报,或者 {the frequency of an Int
> thresh
} 是否真的不是 aBoolean
而是 a Double
in [0-1]
。