Programmation .Net - Indépendance financière

La (Queue/File) Collections.Generic en Visual Basic

La File (Queue) est un peu particulière comparativement à ses homologues la List et le Dictionary. Principalement car elle est basée sur le principe de premier arrivé, premier servi. On peut comparer cela à attendre dans une file pour aller se chercher un café dans votre endroit préféré, le premier arrivé en ligne sera le premier servi. Voici un peu comment il est possible d’illustrer la situation.

First come, First served

On parlera de la même chose dans le cas d’une Queue, le premier élément que vous insérez sera le premier à sortir de la collection.

La Queue fait partie des Generic collections, ceci dit, vous pouvez lui donner le type que vous voulez lorsque vous la déclarez pour ensuite pouvoir y stocker ce que vous désirez. Dans notre cas, nous nous en tiendrons à une ligne de production de voitures (logique) dans laquelle je mettrai des noms de voitures donc des String. En effet, lorsqu’une voiture entre en ligne de montage, la première entrée sera la première sortie! Gardez en tête que plusieurs applications utilisent ce principe, je pense principalement à un service de courriel, le premier courriel arrivé sera le premier livré au client.

Voici comment déclarer une file (Queue) de chaines de caractères en Visual Basic.

Dim CarProductionQueue = New Queue(Of String)

Enqueue(T Element)

Pour ajouter des éléments, nous n’utiliserons pas le Add(T Element) mais plutôt le Enqueue(T Element). Voici un exemple :

'Inserer des nouveaux éléments
CarProductionQueue.Enqueue("Toyota GT86")
CarProductionQueue.Enqueue("Scion FRS")
CarProductionQueue.Enqueue("Subaru BRZ")

Dans le code ci-dessus, j’ajoute trois voitures dans la chaine de montage. J’appelerai donc la méthod Enqueue(String CarToEnqueue) trois fois.

Dequeue()

Remarquez que ce sera aussi différent pour la suppression d’éléments dans la Queue. À la place de Remove(), nous utiliseons la méthode Dequeue() qui retournera l’élément retiré de la Queue. Gardez en tête que si j’ai trois éléments dans la liste par exemple et que j’appelle la méthode Dequeue trois fois, il n’y aura plus d’éléments dans la liste à la fin. Vous devez donc stocker dans une variable l’élément que vous retirez si vous comptez l’utiliser. Dans l’exemple ci-dessous, j’utilise directement l’élément supprimé en l’insérant dans une chaine de caractère à montrer dans la Console.

'Retirer des éléments de la Queue
Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())

Attention, si vous retirez un autre élément de la liste, une exception sera lancée et votre programme plantera. Il est nécessaire de vérifier qu’il reste toujours au moins un élément dans la liste avant d’en retirer.

Count

Voici une façon de montrer tous les éléments dans la console en utilisant une boucle While et en vérifiant que la liste n’est pas vide!

While CarProductionQueue.Count > 0
     Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
End While

Le paramètre Count nous donne donc le nombre d’éléments dans la Queue au moment présent.

Code complet

Voici le code complet contenant les trois exemples de Dequeue, le Enqueue et le Count.

Module Program

    Sub Main()
        Dim CarProductionQueue = New Queue(Of String)

        'Inserer des nouveaux éléments dans la Queue
        CarProductionQueue.Enqueue("Toyota GT86")
        CarProductionQueue.Enqueue("Scion FRS")
        CarProductionQueue.Enqueue("Subaru BRZ")

        ''Retirer les éléments de la Queue (un par un)
        'Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
        'Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
        'Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())

        'Retirer les éléments avec l'aide d'une boucle while
        While CarProductionQueue.Count > 0
            Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
        End While

        ''Retirer les éléments à l'aide d'une boucle For
        'Dim NumberOfCarsInQueue = CarProductionQueue.Count

        'For Index As Integer = 1 To NumberOfCarsInQueue Step 1
        '    Console.WriteLine("Production complete for " & CarProductionQueue.Dequeue())
        'Next

        Console.ReadKey()
    End Sub

End Module

Un autre point important à se rappeler à propos des Collections.Generic est qu’elles ne sont pas ThreadSafe. Qu’est-ce qu’un Thread? Nous verrons plus tard, toutefois j’aimerais que vous gardiez cela en tête jusqu’à un tutoriel futur!

YouTube

Next article Comment utiliser la Stack/Pile en Visual Basic/C#
Previous article Le Dictionary Collections.Generic en Visual Basic/C#

Related posts

0 Comments

No Comments Yet!

You can be first to comment this post!

Leave a Comment

Your data will be safe! Your e-mail address will not be published. Also other data will not be shared with third person. Required fields marked as *