Saya memiliki Peta skala dan ingin menguji apakah ada nilai tertentu di peta.
myMap.exists( /*What should go here*/ )
scala
dictionary
collections
Nabegh
sumber
sumber
Apakah Anda ingin tahu apakah nilai tersebut ada di peta, atau kuncinya? Jika Anda ingin memeriksa kunci, gunakan
isDefinedAt
:sumber
Anda memberikan tes bahwa salah satu nilai peta akan lulus, yaitu
val mymap = Map(9->"lolo", 7->"lala") mymap.exists(_._1 == 7) //true mymap.exists(x => x._1 == 7 && x._2 == "lolo") //false mymap.exists(x => x._1 == 7 && x._2 == "lala") //true
ScalaDocs mengatakan tentang metode "Menguji apakah predikat berlaku untuk beberapa elemen dari peta yang tidak dapat diubah ini.", Tangkapannya adalah ia menerima tupel (kunci, nilai) alih-alih dua parameter.
sumber
Bagaimana dengan ini:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd') map.values.toSeq.contains('c') //false
Menghasilkan
true
jika peta berisic
nilai.Jika Anda bersikeras menggunakan
exists
:map.exists({case(_, value) => value == 'c'})
sumber
values
membuat yang baruIterable
sehingga Anda mungkin lebih baikmap.valuesIterator.contains('c')
(meskipun itu tidak semudahmap.exists(_._2 == 'c')
!)Per jawaban di atas, perhatikan bahwa ada () secara signifikan lebih lambat daripada berisi () (Saya telah membandingkan dengan Peta yang berisi 5000 kunci string, dan rasionya x100 yang konsisten). Saya relatif baru mengenal scala tetapi tebakan saya ada () iterasi atas semua kunci (atau kunci, nilai tupple) sedangkan berisi menggunakan akses acak Map
sumber