|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
22.4.1. System.Collections.QueueVergelijkbaar met de Stack hebben we het Queue type ( of voluit het System.Collections.Queue type ).
Hierbij worden de elementen toegevoegd en verwijderd volgens het "FIFO" principe ( First In First Out ).
De belangrijkste acties die men kan ondernemen met een Queue zijn :
- het toevoegen van een element via de Enqueue(value As Object) method - het verwijderen en opvragen van een element via de Dequeue() As Object method
In onderstaand voorbeeld worden enkele members uit de Queue klasse gedemonstreerd. Visual Basic 2010 Broncode Class Example Public Shared Sub Main() Dim queue1 As New System.Collections. Queue Console.WriteLine(queue1.Count) queue1.Enqueue(1) queue1.Enqueue( "2"c) queue1.Enqueue( "three") Console.WriteLine(queue1.Count) PrintQueue(queue1) Console.WriteLine(queue1.Contains( "2"c)) Console.WriteLine(queue1.Dequeue()) PrintQueue(queue1) Console.WriteLine(queue1.Count) Console.WriteLine(queue1.Peek()) Console.WriteLine(queue1.Count) Console.WriteLine(queue1.Dequeue()) PrintQueue(queue1) Console.WriteLine(queue1.Count) Console.ReadLine() End Sub Public Shared Sub PrintQueue( ByVal queue As Collections. Queue) For Each element As Object In queue If element IsNot Nothing Then Console.Write(element.ToString() & " - ") End If Next Console.WriteLine() End SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 0
3
1 - 2 - three -
True
1
2 - three -
2
2
2
2
three -
1 (1) : Ook de Queue instanties hebben geen initiële capaciteit.
(2) : De Enqueue() method is bruikbaar om elementen van eender welk datatype toe te voegen aan de Queue instantie.
(3) : De Contains() method maakt gebruik van de Equals method van de elementen om die te vergelijken met de parameter.
(4) : De Dequeue() method verwijderd het eerst toegevoegde element en levert het eerst toegevoegde element in Object vorm op. Dit is dus een method die zowel een waarde oplevert ( een "query" ) als een method die de toestand van het object wijzigt ( een "command" ). Dit druist in tegen het "command/query separation pattern" die aanraadt dat een boodschap/method ofwel moet gebruikt worden om de toestand van een object op te vragen ( "query" ) ofwel moet dienen om de toestand van een object te wijzigen ( "command" ), maar niet beide.
(5) : De Peek() method zal net als de Dequeue() method het eerst toegevoegde element in Object vorm opleveren, maar zal in tegenstelling met de Dequeue() method het eerst toegevoegde element niet verwijderen.
(6) : Ook de elementen van een Queue instantie zijn benaderbaar met een For Each iteratie. De elementen worden hierbij overlopen in dezelfde volgorde als ze zouden verwijderd ( "gedequeued" ) worden uit de Queue. boven
22.4.2. Typesafe System.Collections.Generic.Queue(Of T)Indien het type van de elementen van de Queue vastligt, kan men beter een typesafe variant van Queue gebruiken, namelijk Queue(Of T).
Voor meer details over dergelijke generieke collectietypes en typesafe collecties, zie de desbetreffende topics.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|