Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी सेट - उदाहरण, ऑपरेटर और तरीके

रूबी सेट क्या है?

एक सेट एक वर्ग है जो एक सरणी की तरह वस्तुओं को संग्रहीत करता है…

लेकिन कुछ विशेष विशेषताओं के साथ जो इसे 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 . का उपयोग कर सकते हैं कक्षा।

इस वर्ग का उपयोग करने के लिए कुछ आवश्यकताएं हैं:

  1. जो ऑब्जेक्ट आप सेट में जोड़ रहे हैं उन्हें लागू होना चाहिए <=> विधि।
  2. वस्तुएं एक दूसरे से तुलनीय होनी चाहिए (पूर्णांक से पूर्णांक, या स्ट्रिंग से स्ट्रिंग की तुलना करना)

यहां एक उदाहरण दिया गया है:

sorted_numbers = SortedSet.new

sorted_numbers << 5
sorted_numbers << 2
sorted_numbers << 1

sorted_numbers
# SortedSet: {1, 2, 5}

वीडियो ट्यूटोरियल सेट करता है

सारांश

आपने बेहतर प्रदर्शन और आसान कोडिंग के लिए रूबी में सेट का उपयोग करना सीखा। आपने सरणियों और सेटों के बीच अंतर के बारे में भी सीखा।

कृपया इस लेख को साझा करें यदि आपको यह उपयोगी लगा ताकि अधिक लोग इसे ढूंढ सकें 🙂

पढ़ने के लिए धन्यवाद!


  1. जावास्क्रिप्ट सेट दिनांक विधियाँ

    जावास्क्रिप्ट में निर्धारित तिथि विधियाँ हैं - विधि विवरण सेटडेट () दिन को एक संख्या के रूप में सेट करने के लिए। setFullYear()() वर्ष निर्धारित करने के लिए। setHours()() घंटा सेट करने के लिए। सेटमिलीसेकंड () मिलीसेकंड सेट करने के लिए। सेट मिनट्स () मिनट सेट करने के लिए। setMonth() माह स

  1. अपने रूबी तरीकों की जासूसी कैसे करें

    रूबी में एक अंतर्निहित अनुरेखण प्रणाली है जिसे आप TracePoint . का उपयोग करके एक्सेस कर सकते हैं कक्षा। कुछ चीज़ें जिन्हें आप ट्रेस कर सकते हैं, वे हैं मेथड कॉल, नए थ्रेड और अपवाद। आप इसका उपयोग क्यों करना चाहेंगे? ठीक है, यदि आप किसी निश्चित विधि के निष्पादन का पता लगाना चाहते हैं तो यह उपयोगी हो

  1. रूबी के ऐरे क्लास का उपयोग कैसे करें (उदाहरण + उपयोगी तरीके)

    एक सरणी क्या है? एक सरणी एक अंतर्निहित रूबी वर्ग है, जिसमें शून्य या अधिक वस्तुओं की सूची होती है , और इसमें वे विधियां शामिल हैं जो इन सभी वस्तुओं को आसानी से जोड़ने, एक्सेस करने और लूप करने में आपकी सहायता करती हैं। यह मददगार है, क्योंकि यदि सरणियाँ मौजूद नहीं होतीं तो आपको कई चरों का उपयोग करना