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