「含む」または「存在する」チェックを使用するのに最適なデータ構造がどのような状況であるかを知りたいです。
私は Python のバックグラウンドを持っており、すべてに式を使用することに慣れているため、質問if x in something:
します。たとえば、どの式が最も速く評価されるか:
val m = Map(1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4)
//> m : scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2, 3 -> 3, 4
//| -> 4)
val l = List(1,2,3,4) //> l : List[Int] = List(1, 2, 3, 4)
val v = Vector(1,2,3,4) //> v : scala.collection.immutable.Vector[Int] = Vector(1, 2, 3, 4)
m.exists(_._1 == 3) //> res0: Boolean = true
m.contains(3) //> res1: Boolean = true
l.exists(_ == 3) //> res2: Boolean = true
l.contains(3) //> res3: Boolean = true
v.exists(_ == 3) //> res4: Boolean = true
v.contains(3) //> res5: Boolean = true
直観的には、ランダム チェックではベクトルが最も速く、チェックされた値がリストの先頭にあり、多くのデータがあることがわかっている場合はリストが最も速いと思います。ただし、確認または修正は大歓迎です。また、他のデータ構造に自由に拡張してください。
注: この質問が漠然としすぎていると思われる場合は、私に知らせてください。正しい言い回しをしているかわからないからです。