Dnes si povíme o generické kolekci typu Queue - v překladu fronta. Má jen 2 základní funkce:
- Enqueue - přidání jedné položky do fronty
- Dequeue - vyjmutí jedné položky z fronty
Celé si to můžeme představit jako frontu lidí například v bance. Přijdou postupně zákazníci A, B a C. Ty se zařadí do fronty:
Dim fronta As New System.Collections.Generic.Queue(Of String)()
fronta.Enqueue("a")
fronta.Enqueue("b")
fronta.Enqueue("c")
Ve frontě teď stojí tři lidé. První na řadu přijde člověk A, pak B a na konec C:
Console.WriteLine(fronta.Dequeue()) ' první přijde na řadu A
Console.WriteLine(fronta.Dequeue()) ' druhý B
Console.WriteLine(fronta.Dequeue()) ' a poslední C
Fronta se v teorii programování nazývá také jako seznam typu FIFO. Je to zkratka pro first in first out - první dovnitř, první ven - pro náš příklad by byl přátelštější překlad: Kdo přijde první do fronty, první se také z fronty dostane k bankovní přepážce.
Je to prostě seznam do kterého sypeme prvky příkazem Enqueue a ve stejném pořadí je můžeme zase vyjmout příkazem Dequeue. Pokud zavoláme Dequeue na prázdné frontě, vznikne vyjímka. Počet položek ve frontě lze kontrolovat vlastností Count. Není to nic složitého.
Za zmínku stojí ješte funkce Peek, která vrací další záznam ve frontě (stejně jako Dequeue), ale nevyjme tento prvek ven.
V této sérii jsem psal i o následujících třídách:
List
Dictionary
SortedDictionary a SortedList
Queue
Stack
HashSet