Посібник C#, Черга класи Queue та Queue - T

C# --- Посібник з C# --- Черга: класи Queue та Queue

Черга (queue) - це колекція, в якій елементи обробляються за схемою "перший увійшов, перший вийшов" (first in, first out - FIFO). Елемент, вставлений у чергу першим, першим і читається. Прикладами черг можуть бути черга в аеропорту, черга претендентів на працевлаштування, черга друку принтера чи циклічна черга потоків виділення ресурсів процесора. Часто зустрічаються черги, у яких елементи обробляються по-різному відповідно до пріоритету. Наприклад, у черзі в аеропорту пасажири бізнес-класу обслуговуються перед пасажирами економ-класу. Тут можна використовувати кілька черг — по одній для кожного пріоритету. В аеропорту це можна бачити наочно, оскільки там передбачено дві стійки реєстрації для пасажирів бізнес-класу та економ-класу. Те саме справедливо і для черг друку та диспетчера потоків. Може бути масив списку черг, де елемент масиву означає пріоритет. Усередині кожного елемента масиву буде черга, і обробка виконуватиметься за принципом FIFO.

Черга реалізується за допомогою класів Queue із простору імен System.Collections та Queue із простору імен System.Collections.Generic.

У класі Queue визначаються наведені нижче конструктори:

У першій формі конструктора створюється порожня черга з вибираються за умовчанням ємністю та коефіцієнтом зростання 2.0. У другій формі створюється порожня черга, початковий розмір якої визначає ємність, що задається параметром capacity, а коефіцієнт зростання за замовчуванням вибирається для неї 2.0. У третій формі допускається вказувати не тільки ємність (як параметр capacity), а й коефіцієнт зростанняСтворена черга (як параметр growFactor в межах від 1.0 до 10.0). І в четвертій формі створюється черга, що складається з елементів колекції col. Її початкова ємність дорівнює кількості зазначених елементів, а коефіцієнт зростання за умовчанням вибирається нею рівним 2.0.

У класі Queue визначаються такі конструктори:

У першій формі конструктора створюється порожня черга з початковою ємністю, що вибирається за замовчуванням, а в другій формі - порожня черга, початковий розмір якої визначає параметр capacity. І в третій формі створюється черга, що містить елементи колекції, яка визначається параметром collection. Її початкова ємність дорівнює кількості зазначених елементів.

Члени класу Queue представлені нижче:

Count

Властивість Count повертає кількість елементів у черзі.

Enqueue()

Метод Enqueue() додає елемент до кінця черги.

Dequeue()

Метод Dequeue() читає та видаляє елемент із голови черги. Якщо на момент виклику методу Dequeue() елементів у черзі більше немає, генерується виняток InvalidOperationException.

Peek()

Метод Peek() читає елемент із голови черги, але не видаляє його.

TrimExcess()

Метод TrimExcess() змінює ємність черги. Метод Dequeue() видаляє елемент із черги, але не змінює її ємності. TrimExcess() дозволяє позбутися порожніх елементів на початку черги.