先入れ先出し型の配列の使用方法

先入れ先出し型の配列を扱いたい場合はQueueクラスを使用します。

example(VB.net)

Sub Main()
  'Queueオブジェクトを生成 
  Dim Que As New Queue()
  Dim CopyQue As Queue

  '末尾に,引数に指定したオブジェクトを追加する 
  Que.Enqueue("test1")
  Que.Enqueue("test2")
  Que.Enqueue("test3")
  Que.Enqueue("test4")

  'Queの簡易コピーを作成する
  CopyQue = Que.Clone()

  '引数に指定したオブジェクトが存在するかどうかを調べる 
  Dim b As Boolean
  b = Que.Contains("test1")

  'Queの要素数の取得
  Dim count As Integer = Que.Count
   
  'ForEachも使えます
  For Each obj As Object In Que
    Dim str As String = CType(obj, String)
    Console.WriteLine(str)
  Next

 '普通のFor文も使えます
  For i As Integer = 0 To count - 1
    Dim str As String = CType(Que(i), String)
    Console.WriteLine(str)
  Next

  '先頭の要素を取り出す 
  Dim deqObj As Object = Que.Dequeue()
  Console.WriteLine(deqObj)

  'Queオブジェクトの容量を実際の容量へ戻す
  Que.TrimToSize()

  '先頭の要素を取得する 
  Dim PeObj As Object = Que.Peek()
  Console.WriteLine(PeObj)

  'すべてのオブジェクトを削除する 
  Que.Clear()
End Sub

Queueクラスは"Enqueue"メゾットにより配列のサイズを意識することなく、要素を追加できます。

QueueクラスはFor文も使用することができますが、配列の先頭の要素を取得することが一番の目的になると思います。

要素取得の方法

1

"Dequeue"メゾットを使用する方法。

先頭の要素は取得と同時に削除され、その次に格納した要素が先頭の要素となります。上の例では"test1"がdepObjに格納され、Queの先頭の要素は"test2"になります。

2

Peekメゾットを使用する方法

先頭の要素を取得しても先頭の要素は削除されません。上の例ではQueの先頭要素はPeek()後も"test2"のままになっています。

Queueクラスはジェネリック型をサポートするため格納するデータ型式を設定することができます。その際のインスタンスの作成は"Dim Que As New Queue(Of String)"という感じです。

Queueクラスは初期化した時点である程度の領域を勝手に確保してしまいます。例えば普通の配列で言うと、"とりあえず要素は100確保しておいて、必要になったらRedimする。"といった感じです。

Queueクラスでは、要素を追加するときはメモリ領域を確保しますが、削除したときにメモリ領域を解放してくれません。そしてそれを確認する事はできません。メモリの使用量を気にしなくてはならないような場合、要素数を変更した場合は呪文のようにTrimToSizeを実行する必要があります。