Queue نوع خاصی از کالکشن ها در سی شارپ است که عملیات ذخیره سازی مقادیر را به صورت FIFO انجام میدهد. و این بدان معناست که اولین مقداری که وارد Queue میشود، اولین مقداری است که از آن خارج میشود. در این فصل با کالکشن Queue آشنا میشویم.
کلاس Queue
زبان سی شارپ شامل نوعی از کالکشن به نام Queue
است که عملیات ذخیره سازی را به صورت FIFO انجام میدهد و روش این کالکشن دقیقاً عکس کالکشن Stack است.
Queue میتواند شامل مقادیر null و تکراری باشد. از متد ()Enqueue
برای افزودن مقادیر به Queue و از متد ()Dequeue
برای حذف و واکشی مقادیر از آن استفاده می شود.
افزودن عناصر به Queue
با استفاده از متد ()Enqueue
می توان مقادیر را به Queue افزود :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
دسترسی به مقادیر در جایگزین
از متد ()Dequeue
می توان برای واکشی اولین مقداری که وارد صف شده است ، استفاده نمود. این متد اولین عنصر را از Queue حذف نموده و برای ما باز می گرداند. فراخوانی متد ()Dequeue بر روی یک Queue که شامل مقداری نباشد باعث میشود استثنای InvalidOperation
رخ دهد :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
while (queue.Count > 0)
Console.WriteLine(queue.Dequeue());
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
خروجی نمونه مثال بالا به شکل زیر است :
Number of elements in the Queue: 4 3 2 1 Four Number of elements in the Queue: 0
متد ()Peek
از متد ()Peek
برای بازگرداندن اولین عنصر از Queue استفاده کنید. این متد مقادیر را از Queue حذف نمی کند :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
خروجی نمونه مثال بالا به شکل زیر است :
Number of elements in the Queue: 4 3 3
3 Number of elements in the Queue: 4
میتوان با تبدیل کالکشن Queue به یک آرایه بدون حذف مقادیر از آن ، عملیات واکشی را انجام داد :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in Queue: {0}", queue.Count);
foreach (var i in queue.ToArray())
Console.WriteLine(i);
Console.WriteLine("Number of elements in Queue: {0}", queue.Count);
خروجی مثال بالا به شکل زیر است :
Number of elements in Queue: 4 3 2 1 Four Number of elements in Queue: 4
متد ()Contains
از متد ()Contains
برای بررسی وجود مقادیر در Queue استفاده میشود. این متد اگر مقدار مورد نظر در صف وجود داشته باشد مقدار true
و در غیر این صورت مقدار false
را باز می گرداند :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
queue.Contains(2); // true
queue.Contains(100); //false
متد ()Clear
متد ()Clear
همه عناصر Queue را حذف میکند :
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
queue.Clear();
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
خروجی نمونه مثال بالا به شکل زیر است :
Number of elements in the Queue: 4 Number of elements in the Queue: 0