C# Generic Queue<T> Kullanımı

Queue<T> yapısı C#'ın generic collection yapılarından biridir. T ile belirttiğimiz tipte elemanlar tutar ve FIFO (ilk giren ilk çıkar) mantığıyla elemanları dışarı çıkartır.

Bu yapıya örnek olarak bankaya gittiğimizde girdiğimiz sırayı verebiliriz. İlk bankaya gidene ilk sıra gelir gibi.

Enqueue : Queue yapımıza yeni bir eleman eklemek için kullanılır.
Dequeue : Queue yapımızdan sıradaki ilk elemanı alıp bu elemanı siler.
Peek : Queue'deki nesneyi silmeden son elemanı döndürür.

Şimdi örnek bir Queue yapısı geliştirelim:

 public class Person
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return "Fullname: " + Name + " " + Surname + " Age: " + Age;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Queue<Person> personQueue = new Queue<Person>();

            //Queue yapisina Person nesnelerini ekliyoruz
            personQueue.Enqueue(new Person() 
                 { Name = "Ahmet", Surname = "Yilmaz", Age = 21 });
            personQueue.Enqueue(new Person() 
                 { Name = "Safak", Surname = "Unel", Age = 26 });
            personQueue.Enqueue(new Person() 
                 { Name = "Salih", Surname = "Sayar", Age = 42 });

            //Peeked: son eleman silmeden queue'deki son elemana bakiliyor
            //Dequeue: ilk eleman cekilip siliniyor  
            Console.WriteLine("Peeked : {0}", personQueue.Peek());
            Console.WriteLine("Dequeue : {0}", personQueue.Dequeue());

            Console.WriteLine("nPeeked : {0}", personQueue.Peek());
            Console.WriteLine("Dequeue : {0}", personQueue.Dequeue());

            Console.WriteLine("nPeeked : {0}", personQueue.Peek());
            Console.WriteLine("Dequeue : {0}", personQueue.Dequeue());

            try
            {
                // eger stack'imiz bosalttiktan sora Peek veya Pop  
                // metodlarimizi cagirirsak hata aliriz  
                Console.WriteLine("nPeeked : {0}", personQueue.Peek());
                Console.WriteLine("Dequeue: {0}", personQueue.Dequeue());
            }
            catch (Exception e)
            {
                Console.WriteLine("nError: {0}", e.Message);
            }

            Console.ReadLine();  

        }
    }

Çıktı:



Örnek Proje: GenericQueueExample.rar

0 yorum :

Yorum Gönder