Scala でa が与えられた場合、少なくとも 1回出現するすべての s のList[Int]を取得したいと考えています。またはを使用してこれを行うことができます。例えば:Set[Int]IntthreshgroupByfoldLeftfilter
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]が非常に大きいとします。どのくらいの大きさかはわかりませんが、Ints 周波数のそれぞれについては気にしないので、いずれにせよこれは無駄に思えますthresh。合格したらthresh、もうチェックする必要はありません。 を に追加するだけIntですSet[Int]。
問題は、非常に大きなList[Int],
a) 真の正確な結果が必要な場合 (間違いの余地はありません)
b) 結果が概算である場合、たとえば、いくつかのハッシング トリックまたはブルーム フィルターを使用することによって、どこSet[Int]に誤検知が含まれる可能性があるか、{の頻度Int> thresh} が実際には aBooleanではなくDoublein であるかどうか[0-1]。