C# Collections

Introduction to C# Collections

Collections data structures होते है। आप C और C++ के साथ stack, queue आदि data structures को implement कर चुके है। उन्हीं data structures को C# में collections के नाम से जाना जाता है।

Data को अलग अलग तरह से store और access करने के लिए collections प्रयोग किये जाते है। उदाहरण के लिए Queue में First In First Out और Stack में Last In First Out style में data को store और access किया जाता है।

Collections objects का group होते है। C# में सभी primitive types भी classes द्वारा ही represent किये गए है। इसलिए उन्हें भी collections के द्वारा आसानी से store किया जा सकता है।

C# में collections के generic और non-generic दो versions available है। आप अपनी आवश्यकतानुसार एक collection का कोई सा भी version use कर सकते है। Collections के generic versions को अत्यधिक use किया जाता है।

C# में सभी collections classes के द्वारा represent किये गए है। Collection classes के objects create करके आप उनके विभिन्न methods को use कर सकते है और आसानी से data को store और access कर सकते है।

Collection classes को inherit करके आप स्वयं की functionality भी add कर सकते है। हालाँकि C# में कई collection classes है लेकिन उनका interface (methods) लगभग समान है।

Non-generic collection classes को System.Collections और generic collection classes को System.Collection.Generic namespace में store किया गया है।

C# में available collection classes के बारे में आगे detail से बताया जा रहा है। जैसा की आपको पता है C# में strings objects ही है इसलिए ज्यादातर collections के उदाहरण को strings द्वारा समझाया गया है।

ArrayList

यह collection class values को simple list के रूप में store करने के लिए प्रयोग की जाती है। यह class IList Interface को implement करती है। एक ArrayList collection में अलग अलग type के objects को store किया जा सकता है।

ArrayList सबसे flexible collection माना जाता है क्योंकि आप बिना किसी size को define किये कितने भी items add कर सकते है। ArrayList collection आवश्यकतानुसार grow और shrink हो सकता है।

ArrayList create करने का general syntax निचे दिया जा रहा है।

ArrayList alObj = new ArrayList();

एक बार object create करने के बाद ArrayList में values (objects) को add किया जाता है। इसके लिए Add method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

alObj.Add(object);

ArrayList में किसी specific position पर कोई object add करने के लिए Insert(int-pos, object) method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

alObj.Insert(int-position, object);

ArrayList में से किसी object को remove करने के लिए Remove(object-name) method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

alObj.Remove(object-name);

ArrayList के items को sort करने के लिए Sort() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

alObj.Sort();

ArrayList का उपयोग निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.Collections;

class myClass
{
    static void Main(string[] args)
    {
          ArrayList alObj = new ArrayList();
          alObj.Add(“Max”);
          alObj.Add(“Alice”);

          foreach(var item in alObj)
          {
                Console.WriteLine(item);
          }
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Max
Alice

Hashtable

यह class key/value के pair में objects को store करने की facility provide करती है। Values को store और access करने के लिए keys का प्रयोग किया जाता है। Keys और values दोनों ही objects होते है।

Hashtable create करने का general syntax निचे दिया जा रहा है।

Hashtable htObj = new Hashtable();

Hashtable में objects add करने के लिए Add() method का प्रयोग किया जाता है। इसका general syntax निचे दिया जा रहा है।

htObj.Add(object)

कोई key Hashtable में exist करती है या नहीं यह पता लगाने के लिए ContainsKey() method का प्रयोग किया जाता है। यह method Boolean value return करता है। इस method में आप argument के रूप में वह key pass करते है जिसके बारे में आप पता करना चाहते है। इसका syntax निचे दिया जा रहा है।

htObj.ContainsKey(key);

कोई value Hashtable में है या नहीं यह पता करने के लिए ContainsValue() method का प्रयोग किया जाता है। यह method भी Boolean value return करता है। इस method में आप argument के रूप में वह value pass करते है जिसे आप खोज रहे है। इसका syntax निचे दिया जा रहा है।

htObj.ContainsValue(value);

किसी object को Hashtable से remove करने के लिए Remove() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

htObj.Remove();

C# में Hashtable के प्रयोग को निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.Collections;

class myClass
{
    static void Main(string[] args)
    {
         Hashtable htObj = new Hashtable();
         htObj.Add(“1″,”Suresh”);
         htObj.Add(“2″,”Sam”);

         foreach(DictionaryEntry item in htObj)
         {
              Console.WriteLine(“Key:{0}, Value:{1}”, item.Key, item.Value);
         }
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Key: 1, Value: Suresh
Key: 2, Value: Sam

Stack

Stack collection में objects को Last In First Out style में store किया जाता है। Stack collection में push और pop operations perform किये जाते है। Stack में objects add करना push operation कहलाता है और objects remove करना pop operation कहलाता है।

Stack में जो item सबसे पहले add किया जाता है वह सबसे बाद में access होता है और जो item सबसे बाद में add किया जाता है वह सबसे पहले access होता है। Stack collection आवश्यकतानुसार grow और shrink होता है।

Stack create करने का general syntax निचे दिया जा रहा है।

Stack sObj = new Stack();

Stack में objects add करने के लिए Push() method का प्रयोग किया जाता है। इस method में आप वह object pass करते है जिसे आप stack में add करना चाहते है। इसका syntax निचे दिया जा रहा है।

sObj.Push(object-name);

Stack में से आखिर में add किये गए object को प्राप्त करने के लिए Pop() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

sObj.Pop();

कोई object Stack में है या नहीं यह check करने के लिए Contains() method का प्रयोग किया जाता है। यह method एक Boolean value return करता है। इसका syntax निचे दिया जा रहा है।

sObj.Contains(object);

C# में Stack collection के प्रयोग को निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.Collections;

class myClass
{
   static void Main(string[] args)
   {
        Stack sObj = new sObj();

        sObj.Push(“Ganesh”);
        sObj.Push(“Ali”);

        foreach(var item in sObj)
        {
               Console.WriteLine(item);
        }
   }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Ali
Ganesh

Queue

एक Queue collection में objects First In First Out style में store किये जाते है। जो objects सबसे पहले add किये जाते है वे ही सबसे पहले access होते है। यह collection duplicate values को भी allow करता है।

Queue create करने का general syntax निचे दिया जा रहा है।

Queue qObj = new Queue();

किसी Queue collection में objects add करने के लिए Enqueue() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

qObj.Enqueue(object);

Queue में से objects को remove करने के लिए Dequeue() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

qObj.Dequeue(object);

Queue collection के oldest object का reference प्राप्त करने के लिए Peek() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

qObj.Peek();

C# में Queue collection का उपयोग निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.Collections;

class myClass
{
    static void Main(string[] args)
    {
         Queue qObj = new Queue();
         qObj.Enqueue(“Lion”);
         qObj.Enqueue(“Tiger”);

         foreach(var item in qObj)
         {
              Console.WriteLine(qObj);
         }
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Lion
Tiger

NameValueCollection

यदि आप name और value के pair में objects को store करना चाहते है तो इसके लिए आप NameValueCollection का प्रयोग कर सकते है।

इस collection में आप एक ही नाम के लिए multiple values भी store कर सकते है। इस collection को अपने program में use करने के लिए आपको System.Collection.Specialized namespace को import करने की आवश्यकता होती है।

NameValueCollection create करने का general syntax निचे दिया जा रहा है।

NameValueCollection nvcObj = new NameValueCollection();

NameValueCollection में object add करने के लिए Add() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

nvcObj.Add(name-object, value-object);

NameValueCollection से value प्राप्त करने के लिए GetValues() method का प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

nvcObj.GetValues(name-object);

C# में NameValueCollection का उपयोग निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.Collections;

class myClass
{
    static void Main(string[] args)
    {
         NameValueCollection nvcObj = new NameValueCollection();
         nvcObj.Add(“Emerald”);
         nvcObj.Add(“Diamond”);

         foreach(var item in nvcObj)
         {
             Console.WriteLine(nvcObj);
         }
    }
}