The Queue Collection

Queue კლასი არის კოლექცია FIFO (First In, First Out) ფუნქციონალურობით.
Queue იგივე რიგი არის მონაცემთა თანმიმდევრობა, რომელშიც ინახება მონაცემები შემდგომ გამოყენებამდე.
თუ Queue–ში დაემატა რამოდენიმე ელემენტი მათთან წვდომა მოხერხდება ისე რა თანმიმდევრობითაც მოხდა წევრების დამატება. FIFO შეგვიძლია წარმოვიდგინოთ ასეთი მაგალითის სახით, ვთქვათ მაღაზიასთან რიგი დგას მაშინ ვინც პირველი ჩადგა რიგში ისვე შევა პირველივე და გამოვა მაღაზიიდან.
.net framework შეიცავს Queue ტიპის კოლექციას. მოცემული კლასი უზრუნველყობს FIFO რიგის ფუნქციონალურობას. Queue კლასი არის ძალზე მარტივი კოლექცია, რომელიც შეიძლება შეიცავდეს ნებისმიერ ობჯექტს, დუბლირებული წევრებისა და null სიდიდის წევრების ჩათვლით. საწყის ეტაპზე Queue კლასის კონსტრუქტორი უზრუნველყობს ეხსიერების გამოყოფას 32 წევრისთვის. ხოლო შემდეგ გამოყოფილი მეხსიერების ყოველი გადავსების შემხვევაში იგი ორმაგდება. მოცემული კლასი შედის System.Collections ნეიმსფეისში ამიტომ მისი გამოყენების წინ საჭიროა using System.Collections დამატება.

 

using System;
using System.Collections;

namespace QueueDemo {
  class Program {
    static void Main(string[] args) {
      Constructors();
      EnqueueMethod();
      DequeueMethod();
      PeekMethod();
      Clear();
      TrimToSize();
      Contains();
      ToArray();
      CreatingAThreadSafeQueueWrapper();
    }

    // Constructors
    static void Constructors() {
      ArrayList myList = new ArrayList();
      myList.Add("String 1");
      myList.Add("String 2");

      //Queue myFifo = new Queue();        
      //Queue myFifo = new Queue(25);//კონსტრუქტორს პარამეტრად
      //გადაეცემა რიგის(Queue) ტევადობა 25
      //Queue myFifo = new Queue(10, 1.5F);//კონსტრუქტორს 10
      //ელემენტიან ტევადობასთან ერთად
      //გადაეცემა ზრდის ფაქტორი 1.5(ანუ მეხსიერების ყოველი
      //გამოყოფისას, მისი ზრდა მოხდება 1.5ჯერ)

      Queue myFifo = new Queue(myList);
      //Copies myList into the queue
    }

    // Enqueue Method
    static void EnqueueMethod() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");//წევრის დამატება
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      Console.WriteLine("Count: {0}", waiting.Count);
      // Outputs "Count: 3"
    }

    // Dequeue Method
    static void DequeueMethod() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      while(waiting.Count != 0) {
        string next = waiting.Dequeue().ToString();//მოცემული
        //Dequeue() ფუნქციით ხდება რიგიდან წევრების ამოღება იმ
        //თანმიმდევრობით რა თანმიმდევრობითაც მოხდა ჩაწერა
        Console.WriteLine(next);
      }

      /* OUTPUT

      Mrs Brown
      Mr Green
      Miss Black
      
      */
    }

    // Peek Method
    static void PeekMethod() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      string next = waiting.Peek().ToString();//მოცემული Peek()
      //ფუნქციით ხდება არა ელემენტის ამოღება, არამედ მოცემული
      //ელემენტის მნიშვნელობოს ჩაწერა string–ის ტიპის ცვლადში.  
      Console.WriteLine(next);     // Outputs "Mrs Brown"
      Console.WriteLine("Count: {0}", waiting.Count); 
      // Outputs "Count: 3"
    }

    // Clear
    static void Clear() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      Console.WriteLine("Count: {0}", waiting.Count);  
      // Outputs "Count: 3"
      waiting.Clear();
      //მოცემული მეთოდი ასუფთავებს მთელ რიგს წევრებისგან
      Console.WriteLine("Count: {0}", waiting.Count);
      // Outputs "Count: 0"
    }

    // TrimToSize
    static void TrimToSize() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      waiting.TrimToSize();//Resize the queue
      //რიგის ტევადობა მისი ელემენტების ტოლი იქნება
    }

    // Contains
    static void Contains() {
      Queue waiting = new Queue();

      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      Console.WriteLine(waiting.Contains("Mrs Brown"));
      //Outputs "True"
      Console.WriteLine(waiting.Contains("Mrs White"));
      //Outputs "False"
    }

    // ToArray
    static void ToArray() {
      Queue waiting = new Queue();
      
      waiting.Enqueue("Mrs Brown");
      waiting.Enqueue("Mr Green");
      waiting.Enqueue("Miss Black");

      // Copy items
      object[] array = waiting.ToArray();
      //ToArray() მეთოდი უზრუნველყობს რიგის ელემენტების
      //ისე ამოღებას რომ არ დაირღვეს რიგის თანმიმდევრობა.
      //რიგის შემადგენლობა ამოწერილი იქნება მასივში object
      //წევრების სახით.

      // List array items
      foreach(object o in array)
        Console.WriteLine(o.ToString());

      /* OUTPUT

      Mrs Brown
      Mr Green
      Miss Black

      */
      Console.ReadKey();
    }

    // Creating a Thread-Safe Queue Wrapper
    static void CreatingAThreadSafeQueueWrapper() {
      Queue myCollection = new Queue();

      Queue myThreadSafe = Queue.Synchronized(myCollection);

      Console.WriteLine(myThreadSafe.IsSynchronized);  
      // Outputs "True"
    }
  }
}

* This source code was highlighted with Source Code Highlighter.

Advertisements
This entry was posted in C# Programming. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s