কী বা মানটি মানচিত্রে আছে কিনা তা কীভাবে পরীক্ষা করবেন?


88

আমার একটি স্কালা মানচিত্র রয়েছে এবং মানচিত্রে একটি নির্দিষ্ট মান বিদ্যমান কিনা তা পরীক্ষা করতে চাই।

myMap.exists( /*What should go here*/ )

উত্তর:


143

আপনি কী বোঝাতে চাইছেন তার উপর নির্ভর করে বিভিন্ন বিকল্প রয়েছে।

যদি আপনি "মান" কী-মান জোড় বলতে বোঝায় তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন

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") খাটো হওয়ার পরে শেষ হয় তবে সামান্য দীর্ঘতর ফর্মগুলি আপনি কী হতে চান তা সম্পর্কে আরও স্পষ্ট।


13
একটি কী কী থাকার অস্তিত্ব পরীক্ষা করার জন্য, লাইব্রেরিটি মাইম্যাপ.কন্টেনগুলি ("ফিশ") সরবরাহ করে
ডেভ গ্রিফিথ

4
@ ডেভ গ্রিফিথ - সত্যই। আমি কেবল "অস্তিত্ব" ব্যবহার করছি, তবে যুক্ত করতে যথেষ্ট গুরুত্বপূর্ণ এটির (কারণ এটি আপনার ব্যবহার করা উচিত ) আমি সেই অনুসারে উত্তরটি সংশোধন করেছি।
রেক্স কের

26

আপনি মানচিত্রের মানটি বা কীটি বিদ্যমান কিনা তা জানতে চান ? আপনি যদি কীটি পরীক্ষা করতে চান তবে ব্যবহার করুন isDefinedAt:

myMap isDefinedAt key

9

আপনি একটি পরীক্ষা সরবরাহ করেন যে মানচিত্রের মানগুলির মধ্যে একটি পাস করবে, অর্থাৎ

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

স্ক্যালাডোকস পদ্ধতিটির বিষয়ে বলেছেন "কোনও পরিবর্তনকারী এই পরিবর্তনীয় মানচিত্রের কিছু উপাদানকে ধারণ করে কিনা তা পরীক্ষা করে।", ধরাটি হ'ল এটি দুটি পরামিতির পরিবর্তে একটি টিপল (কী, মান) গ্রহণ করে।


6

এই সম্পর্কে কি:

val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c')  //false

trueমানচিত্রে cমান থাকলে ফলন ।

আপনি যদি জেদ করে থাকেন exists:

map.exists({case(_, value) => value == 'c'})

4
valuesএকটি নতুন তৈরি করে Iterableযাতে আপনি সম্ভবত map.valuesIterator.contains('c')map.exists(_._2 == 'c')
এটির

3

উপরের উত্তরগুলিতে, নোটটি উপস্থিত রয়েছে () রয়েছে () এর তুলনায় উল্লেখযোগ্যভাবে ধীর (আমি 5000 স্ট্রিং কী রয়েছে এমন মানচিত্রের সাথে বেঞ্চমার্ক করেছি, এবং অনুপাতটি একটি সামঞ্জস্যপূর্ণ x100)। আমি স্কেলে তুলনামূলকভাবে নতুন কিন্তু আমার অনুমান বিদ্যমান () সমস্ত কী (বা কী, মান টিপল) এর উপর পুনরাবৃত্তি করছে যেখানে মানচিত্রের এলোমেলো অ্যাক্সেস ব্যবহার রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.