Ir para o conteúdo

Implementando um FIFO

O namespace System.Collections.Generic possui uma classe que permite implementar, de uma forma muito simples, um FIFO (first-in, first-out). Este método é muito útil em diversas aplicações (ex: produtos numa linha de produção, buffers, etc), mas também para manter os últimos registos de algo.

Para mostrar a utilização desta colecção, Queue, será mostada criada uma pequena lista de itens e depois será removido um e inserido outro. Um exemplo simples, mas certamente muito útil.

Exemplo

    ''' <summary>
    ''' Mostra os items que estão na lista
    ''' </summary>
    Sub showList(ByVal fifoList As Queue(Of String))
        For x As Byte = 0 To fifoList.Count - 1
            Debug.WriteLine(fifoList(x).ToString)
        Next
    End Sub



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim fifo As New Queue(Of String)

        ' Adiciona itens ao fifo através do método Enqueue()
        For x As Byte = 0 To 9
            fifo.Enqueue("Item " & x)
        Next

        ' Mostra os dados actuais
        showList(fifo)
        Stop


        ' ------------------------------------------
        ' OUTPUT (Immediate Window):
        ' ------------------------------------------
        ' Item 0
        ' Item 1
        ' Item 2
        ' Item 3
        ' Item 4
        ' Item 5
        ' Item 6
        ' Item 7
        ' Item 8
        ' Item 9


        ' Informação do item que vai sair da lista
        Dim fifoNextToLeave As String = fifo.Peek
        Debug.WriteLine("Próximo item a sair: " & fifoNextToLeave)


        ' ------------------------------------------
        ' OUTPUT (Immediate Window):
        ' ------------------------------------------
        ' Próximo item a sair: Item 0
        ' Remove um item da lista (por ordem) e guarda
        '  a informação numa variável que será mostrada

        Dim fifoOut As String = fifo.Dequeue()
        Debug.WriteLine("Item removido: " & fifoOut)


        ' Adiciona um novo item para manter o mesmo número de itens
        fifo.Enqueue("Item 10")

        ' Mostra os dados finais
        showList(fifo)
        Stop


        ' ------------------------------------------
        ' OUTPUT (Immediate Window):
        ' ------------------------------------------
        ' Item 1
        ' Item 2
        ' Item 3
        ' Item 4
        ' Item 5
        ' Item 6
        ' Item 7
        ' Item 8
        ' Item 9
        ' Item 10

        ' Limpa todos os resultados da lista
        fifo.Clear()

    End Sub