【.NET】 System.Collections.GenericのQueue<T>を試す

.NET Framework コンピュータ
.NET Framework

「Queue」というコレクションがあるのですが、なんと読むのでしょうか?すごく馴染みのある言葉のような気がしますが言葉が出てきません。
ということがきっかけで読みが方がわからない「Queue」を試してみたいと思います。
調べてみると「Queue」は先入れ先出しのコレクションとのことです。

using System.Collections.Generic;

// 初期化
var que = new Queue<string>();

// Queueの末尾に要素を追加
que.Enqueue("A");
que.Enqueue("B");
que.Enqueue("C");
que.Enqueue("D");
que.Enqueue("E");

// Peek()で先頭の要素を取り出し
var s = que.Peek();
Console.WriteLine(s);
/*結果
A
*/
// Console.WriteLine(que[0]); <= NG

// Queueが空になるまで要素を取り出し
while(que.Count > 0)
{
    s = que.Dequeue();
    Console.WriteLine(s);
}
/* 結果
A
B
C
D
E
*/

A~Eの要素をQueueコレクションにEnqueue()メソッド追加し、その後Queueコレクションの要素数が0になるまでDequeue()メソッドで要素を取り出しています。
Dequeue()取り出される要素の順番はEnqueue()で要素を追加した順番と一致します。
また、Peek()メソッドで先頭の要素を取り出すことが出来ますが、Queueコレクションの要素数は変化していないことが確認できます。

[]のインデックスが使えないコレクションだとするとかなり不自由な感じがします。

ただ順番に処理するというロジックをList<T>のインデックスを使って実装しようとすると、要素数が変化するのでListのインデックスで現在の位置保持することが難しい状況になり、結局Queueと同じような使い方になってしまいます。以前Webスクレイピングをするプログラムを組んでいて取得するURLの管理をList<T>可変長配列で実装したところ、かなり苦労した経験があります。

とここまで調べてみて、Queueの読み方が自分の中で繋がりました。待ち行列の処理に使われることから、多分「キュー」だと思われます。

コメント