.NET Tip #17: Generické kolekce (4/6) - Queue (fronta)

Tomáš Jecha       16. 10. 2008       VB.NET, .NET Tips       7206 zobrazení

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
  •  

    hodnocení článku

    0       Hodnotit mohou jen registrované uživatelé.

     

    Nový příspěvek

     

    Diskuse: .NET Tip #19: Generické kolekce (4/7) - Queue (fronta)

    Použili jste někdo frontu nebo zásobník v praxi? Ptám se na to proto, že zatímco LIST nebo DICTIONARY používám na každém kroku, frontu či zásobník jsem nepoužil snad ještě nikdy. Jsem sám, nebo je to prostě tím, že dělám hlavně databázové věci, kde se z principu seznamy a slovníky používají víc?

    nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

    Také jsem je použil jen párkrát. Na prstech jedné ruky bych to asi spočítal. Rozhodně ale může nastat situace, kdy se hodit budou. Máte pravdu, že bezkonkurenčně nejpoužívanější jsou právě List a Dictionary.

    nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                           
    Nadpis:
    Antispam: Komu se občas házejí perly?
    Příspěvek bude publikován pod identitou   anonym.

    Nyní zakládáte pod článkem nové diskusní vlákno.
    Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

    Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

     

    • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
      Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
    • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

    přihlásit pomocí externího účtu

    přihlásit pomocí jména a hesla

    Uživatel:  
    Heslo:  

    zapomenuté heslo

     

    založit nový uživatelský účet

    zaregistrujte se

     
    zavřít

    Nahlásit spam

    Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

    Nahlásit Zrušit

    Chyba

    zavřít

    feedback