मेरे पास एक स्काला मैप है और यदि कोई निश्चित मान मानचित्र में मौजूद है तो मैं उसका परीक्षण करना चाहूंगा।
myMap.exists( /*What should go here*/ )
जवाबों:
कई अलग-अलग विकल्प हैं, जो आपके मतलब के आधार पर हैं।
यदि आप "मूल्य" कुंजी-मूल्य जोड़ी से मतलब रखते हैं , तो आप कुछ का उपयोग कर सकते हैं
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
यदि आप कुंजी-मूल्य जोड़ी के मूल्य का मतलब है , तो आप कर सकते हैं
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
यदि आप केवल कुंजी-मूल्य जोड़ी की कुंजी का परीक्षण करना चाहते हैं , तो
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
ध्यान दें कि यद्यपि टुपल फॉर्म (जैसे _._1 == "fish"
) छोटे होते जा रहे हैं, थोड़े लंबे फॉर्म अधिक स्पष्ट हैं कि आप क्या करना चाहते हैं।
क्या आप जानना चाहते हैं कि क्या मूल्य मानचित्र पर मौजूद है, या कुंजी? यदि आप कुंजी की जांच करना चाहते हैं, तो उपयोग करें isDefinedAt
:
myMap isDefinedAt key
आप एक परीक्षण प्रदान करते हैं कि मानचित्र मानों में से एक पास होगा, अर्थात
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 विधि के बारे में कहता है "टेस्ट कि क्या एक विधेय इस अपरिवर्तनीय मानचित्र के कुछ तत्वों के लिए रखता है।", पकड़ यह है कि यह दो मापदंडों के बजाय एक टपल (कुंजी, मूल्य) प्राप्त करता है।
इस बारे में क्या:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
true
यदि मैप में पैदावार होती हैc
मान मान हो ।
यदि आप उपयोग करने पर जोर देते हैं exists
:
map.exists({case(_, value) => value == 'c'})
values
एक नया बनाता है Iterable
ताकि आप शायद बेहतर हों map.valuesIterator.contains('c')
(हालाँकि यह उतना आसान नहीं है map.exists(_._2 == 'c')
!)
ऊपर दिए गए उत्तर के अनुसार, ध्यान दें कि मौजूद है () में की तुलना में काफी धीमी है () (मैंने 5000 स्ट्रिंग कुंजियों वाले मानचित्र के साथ बेंचमार्क किया है, और अनुपात एक सुसंगत x100 था)। मैं scala के लिए अपेक्षाकृत नया हूं, लेकिन मेरा अनुमान मौजूद है () सभी कुंजियों (या कुंजी, मान टुप्पल) से अधिक परेशान कर रहा है, जबकि इसमें मैप का यादृच्छिक उपयोग शामिल है