Ruby सेट क्या है?
एक सेट एक क्लास है जो आइटम्स को सरणी की तरह स्टोर करता है...
लेकिन कुछ विशेष गुणों के साथ जो इसे विशिष्ट स्थितियों में 10x तेज बनाते हैं!
उसके ऊपर:
सेट में सभी आइटम्स अद्वितीय होने की गारंटी है।
इस Ruby ट्यूटोरियल में आप सीखेंगे:
- अपने अधिकतम लाभ के लिए सेट का उपयोग कैसे और कब करें
- सेट्स और सरणियों के बीच अंतर!
- उपयोगी सेट मेथड्स की सूची
चलिए शुरू करते हैं!
Ruby Set उदाहरण
एक सेट एक Ruby क्लास है जो आपको अद्वितीय आइटम्स की सूची बनाने में मदद करता है।
यहां एक उदाहरण है कि यह कैसे उपयोगी है:
मान लीजिए कि आप उत्पादों की एक बड़ी सूची पर जा रहे हैं।
लेकिन इस सूची में डुप्लिकेट एंट्रीज हैं और आप केवल अद्वितीय उत्पाद चाहते हैं।
आप उन्हें एक सेट में डाल सकते हैं, और सेट यह सुनिश्चित करेगा कि आपकी उत्पाद सूची हमेशा अद्वितीय है बिना किसी अतिरिक्त काम के।
यहां कैसे करना है:
require 'set' products = Set.new products << 1 products << 1 products << 2 products # Set: {1, 2}
एक और लाभ यह है कि इस सूची को खोजना बहुत तेज़ होगा:
products.include?(1) # true
यह इतना तेज़ है क्योंकि खोज constant time में की जाती है।
Set बनाम Array - अंतर समझना
अब आप सोच रहे होंगे...
सेट और सरणी में क्या अंतर है?
सेट का तत्वों तक सीधा पहुंच नहीं है:
products[0] # undefined method `[]'
यह मुख्य अंतर है।
लेकिन एक सेट को किसी भी समय सरणी में बदला जा सकता है जब आपको इसकी आवश्यकता हो:
products.to_a # [1, 2]
सेट का उपयोग करने का पूरा बिंदु इसके दो विशेष गुणों का उपयोग करना है:
- तेज़ लुकअप टाइम्स (
include?के साथ) - अद्वितीय मान
यदि आपको ये चाहिए तो सेट आपको एक अच्छा प्रदर्शन बूस्ट देगा, और आपको हर बार जब आप अद्वितीय तत्व चाहते हैं तो अपनी सरणी पर uniq कॉल नहीं करना पड़ेगा।
Set बनाम Array बेंचमार्क
यहां सरणी और सेट include? मेथड्स के बीच प्रदर्शन अंतर दिखाने के लिए एक बेंचमार्क है।
# Ruby 2.5.0 set include: 8381985.2 i/s array include: 703305.5 i/s - 11.92x slower
इस अंतर का कारण यह है कि एक सरणी को हर एक तत्व की जांच करनी पड़ती है!
यदि आपके पास 1 मिलियन तत्वों की सरणी है तो हर बार जब आप include? कॉल करते हैं तो यह 1 मिलियन तत्वों की जांच करेगा।
सेट को ऐसा नहीं करना पड़ता।
Ruby Set मेथड्स
सेट्स के बीच कई ऑपरेशन या मेथड्स किए जा सकते हैं, यदि आपका कुछ गणित पृष्ठभूमि है तो आप उन्हें पहचान सकते हैं।
यूनियन ऑपरेटर
उपयोगी सेट मेथड्स में से एक है यूनियन ऑपरेटर:
products | (1..10) # Set: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
यह ऑपरेटर आपको दो सेट्स के सभी अद्वितीय तत्वों को एक सेट में संयोजित करने की अनुमति देता है।
बता दें, यह किसी भी Enumerable ऑब्जेक्ट के साथ काम करता है, जैसे सरणियाँ, रेंज और हैश, न कि केवल Set क्लास के ऑब्जेक्ट्स।
डिफरेंस ऑपरेटर
यदि आप एक सेट के तत्वों को दूसरे सेट से हटाना चाहते हैं तो यह आपका मेथड है।
यहां एक उदाहरण है:
products - (3..4) # Set: {1, 2, 5, 6, 7, 8, 9, 10}
इंटरसेक्शन ऑपरेटर
और यहां सेट इंटरसेक्शन ऑपरेटर है:
Set.new(1..3) & Set.new(2..5) # Set: {2, 3}
यह आपको दोनों सेट्स में सामान्य तत्व देता है।
ये 3 ऑपरेटर्स (यूनियन, डिफरेंस और इंटरसेक्शन) सरणियों के साथ भी उपयोग किए जा सकते हैं।
सुपरसेट और सबसेट
एक सुपरसेट एक सेट है जिसमें दूसरे सेट के सभी तत्व होते हैं।
आप जांच सकते हैं कि क्या एक सेट दूसरे का सुपरसेट है।
इस तरह:
Set.new(10..40) >= Set.new(20..30)
रेंज 10..40 में 20..30 शामिल है।
एक सबसेट एक सेट है जो दूसरे सेट के भागों से बना है:
Set.new(25..27) <= Set.new(20..30)
सॉर्टेड सेट्स का उपयोग कैसे करें
यदि आप एक सेट चाहते हैं जो हमेशा सॉर्टेड रहे तो आप SortedSet क्लास का उपयोग कर सकते हैं।
इस क्लास का उपयोग करने के लिए कुछ आवश्यकताएं हैं:
- आप जिन ऑब्जेक्ट्स को सेट में जोड़ रहे हैं उन्हें <=> मेथड लागू करना होगा।
- ऑब्जेक्ट्स एक दूसरे के साथ तुलनीय होने चाहिए (इंटीजर की तुलना इंटीजर से, या स्ट्रिंग की तुलना स्ट्रिंग से)
यहां एक उदाहरण है:
sorted_numbers = SortedSet.new sorted_numbers << 5 sorted_numbers << 2 sorted_numbers << 1 sorted_numbers # SortedSet: {1, 2, 5}
सेट्स वीडियो ट्यूटोरियल
सारांश
आपने बेहतर प्रदर्शन और आसान कोडिंग के लिए Ruby में सेट्स का उपयोग करना सीखा। आपने सरणियों और सेट्स के बीच अंतर के बारे में भी सीखा।
यदि आपको यह लेख उपयोगी लगा तो कृपया इसे साझा करें ताकि अधिक लोग इसे ढूंढ सकें 🙂
पढ़ने के लिए धन्यवाद!