ट्रैक
/
Java
Java
/
अभ्यास
/
सबको झपट लीजिए
सबको झपट लीजिए

सबको झपट लीजिए

सीखने का अभ्यास

परिचय

सेट

Set एक ऐसा संग्रह है जिसमें कोई क्रम नहीं होता और जिसमें List के विपरीत निश्चित रूप से कोई डुप्लिकेट वैल्यू नहीं होती।

Set इंटरफ़ेस का जेनेरिक टाइप पैरामीटर बताता है कि उस Set में रखे गए एलिमेंट किस टाइप के होंगे:

Set<Integer> ints = Set.of(1, 2, 3);
Set<String> strings = Set.of("alpha", "beta", "gamma");
Set<Object> mixed = Set.of(1, false, "foo");

ध्यान दीजिए कि Set.of() मेथड एक ऐसा Set इंस्टेंस बनाता है जिसे बदला नहीं जा सकता। इस इंस्टेंस पर add और remove जैसे मेथड कॉल करने की कोशिश की तो प्रोग्राम चलने के समय एक एक्सेप्शन मिलेगा।

ऐसा Set बनाने के लिए जिसे बदला जा सके, आपको ऐसी क्लास का एक इंस्टेंस बनाना होगा जो Set इंटरफ़ेस को लागू करती है। इस इंटरफ़ेस को लागू करने वाली सबसे अधिक इस्तेमाल होने वाली बिल्ट-इन क्लास HashSet क्लास है।

Set<Integer> ints = new HashSet<>();

Set इंटरफ़ेस Collection और Iterable इंटरफ़ेस को विस्तारित करता है, इसलिए यह अन्य प्रकार के संग्रहों के साथ बहुत से मेथड साझा करता है। लेकिन Collection इंटरफ़ेस से एक खास फ़र्क यह है कि add और remove जैसे मेथड void के बजाय एक boolean लौटाते हैं, जो बताता है कि जब वह मेथड कॉल किया गया था, तब वह आइटम सेट में मौजूद था या नहीं:

Set<Integer> set = new HashSet<>();
set.add(1);
// => true
set.add(2);
// => true
set.add(1);
// => false
set.size();
// => 2
set.contains(1);
// => true
set.contains(3);
// => false
set.remove(3);
// => false
set.remove(2);
// => true
set.size();
// => 1

निर्देश

Blorkemon™️ कार्डों के लिए आपकी पुरानी यादें कम होने का नाम ही नहीं ले रहीं। आपने तो उन्हें दोबारा इकट्ठा करना भी शुरू कर दिया है और अब अपने दोस्तों को भी साथ जोड़ रहे हैं।

इस अभ्यास में आप अपना संग्रह सँभालने के लिए Set इंटरफेस का उपयोग करेंगे, क्योंकि जब आपका लक्ष्य सभी मौजूद कार्ड इकट्ठा करना हो, तो डुप्लिकेट कार्ड मायने नहीं रखते।

1. संग्रह शुरू कीजिए

आपको अपना Blorkemon™️ कार्डों का पुराना भंडार अभी-अभी मिला है! उस भंडार में बहुत सारे डुप्लिकेट कार्ड हैं, इसलिए अब डुप्लिकेट हटाकर एक नया संग्रह शुरू करने का समय है।

आप चाहते हैं कि आपके दोस्त भी आपके Blorkemon™️ के पागलपन में शामिल हों, और इसका सबसे अच्छा तरीका यह है कि आप उन्हें एक कार्ड देकर उनका संग्रह शुरू करा दें।

newCollection मेथड लागू कीजिए, जो कार्डों के ऐरे को बदलकर आपके नए संग्रह का Set बना देता है।

GottaSnatchEmAll.newCollection(List.of("Newthree", "Newthree", "Newthree"));
// => {"Newthree"}

2. संग्रह बढ़ाइए

संग्रह बन जाने के बाद उसकी अपनी एक ज़िंदगी होती है और उसे बढ़ते रहना चाहिए।

addCard मेथड लागू कीजिए, जो एक नया कार्ड और आपके इकट्ठा किए गए कार्डों का मौजूदा सेट लेता है। अगर वह नया कार्ड संग्रह में पहले से मौजूद नहीं है, तो यह मेथड उसे संग्रह में जोड़ देता है। साथ ही यह एक boolean लौटाता है, जो बताता है कि संग्रह अपडेट हुआ या नहीं।

Set<String> collection = GottaSnatchEmAll.newCollection("Newthree");
GottaSnatchEmAll.addCard("Scientuna",collection);
// => true

collection.contains("Scientuna");
// => true

3. अदला-बदली शुरू कीजिए

आप चाहते हैं कि आपके दोस्त भी आपके Blorkemon™️ के पागलपन में शामिल हों, इसलिए अब अदला-बदली शुरू करने का समय है!

दोस्तों के साथ अदला-बदली करते समय हर सौदा करने लायक नहीं होता, या वह हो ही नहीं सकता। आपको अदला-बदली तभी करनी चाहिए जब आपके और आपके दोस्त, दोनों के पास कोई ऐसा कार्ड हो जो दूसरे के पास न हो।

canTrade मेथड लागू कीजिए, जो आपका मौजूदा संग्रह और आपके किसी एक दोस्त का संग्रह लेता है। ऊपर बताए नियमों के अनुसार यह एक boolean लौटाता है, जो बताता है कि अदला-बदली हो सकती है या नहीं।

Set<String> myCollection = Set.of("Newthree");
Set<String> theirCollection = Set.of("Scientuna");
GottaSnatchEmAll.canTrade(myCollection, theirCollection);
// => true

4. साझा कार्ड पहचानिए

आप और Blorkemon™️ के शौकीन दोस्त एक साथ बैठते हैं और सोचते हैं कि सबसे ज़्यादा कौन-से कार्ड साझा हैं।

commonCards मेथड लागू कीजिए, जो संग्रहों का ऐरे लेता है और ऐसे कार्डों का संग्रह लौटाता है जो सभी संग्रहों में मौजूद हैं।

GottaSnatchEmAll.commonCards(List.of(Set.of("Scientuna"), Set.of("Newthree","Scientuna")));
// => {"Scientuna"}

5. सारे कार्ड

क्या आपके और आपके दोस्तों के पास मिलकर सारे Blorkemon™️ कार्ड हैं?

allCards मेथड लागू कीजिए, जो संग्रहों का ऐरे लेता है और सभी संग्रहों को मिलाकर उनमें मौजूद सारे अलग-अलग कार्डों का एक संग्रह लौटाता है।

GottaSnatchEmAll.allCards(List.of(Set.of("Scientuna"), Set.of("Newthree","Scientuna")));
// => {"Newthree", "Scientuna"}
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Java Exercism

सबको झपट लीजिए शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।