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