C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のQueue(キュー)クラスとは?主要メソッドと実用例をわかりやすく解説

C#の Queue<T> クラスは、先入れ先出し(FIFO:First-In, First-Out)方式でオブジェクトを格納するコレクションです。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの順次処理やデータのバッファリングなど、処理順序が重要となる場面で広く活用されています。

まず、Queueクラスで利用できる主なメソッドを一覧で確認しましょう。

No.メソッドと説明
1Clear()
Queue<T>からすべてのオブジェクトを削除します。
2Contains(T)
指定した要素がQueue<T>内に存在するかどうかを判定します。
3CopyTo(T[], Int32)
Queue<T>の要素を、指定した配列インデックスを開始位置として、既存の1次元配列にコピーします。
4Dequeue()
Queue<T>の先頭にあるオブジェクトを削除し、そのオブジェクトを返します。
5Enqueue(T)
Queue<T>の末尾にオブジェクトを追加します。
6Equals(Object)
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判定します。(Objectから継承)
7GetEnumerator()
Queue<T>を反復処理するための列挙子を返します。
8GetHashCode()
既定のハッシュ関数として機能します。(Objectから継承)
9GetType()
現在のインスタンスのTypeを取得します。

使用例

それでは、実際のコード例を見ていきましょう。

例1:Peek()でキューの先頭要素を取得する

キューの先頭にあるオブジェクトを参照するには、Peek() メソッドを使用します。以下のコードでは、文字列「A」〜「G」を順にエンキューした後、要素数と先頭の要素を出力しています。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("A");
        queue.Enqueue("B");
        queue.Enqueue("C");
        queue.Enqueue("D");
        queue.Enqueue("E");
        queue.Enqueue("F");
        queue.Enqueue("G");

        Console.WriteLine("Count of elements = " + queue.Count);
        Console.WriteLine("Element at the beginning of queue = " + queue.Peek());
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Count of elements = 7
Element at the beginning of queue = A

このように、Count プロパティで現在の要素数を確認でき、Peek() を使えばキューから要素を取り除くことなく先頭の値を取得できることがわかります。

例2:Clear()でキューの全要素を削除する

キュー内のすべてのオブジェクトを一度に削除するには、Clear() メソッドを使用します。以下の例では、8つの名前をエンキューした後、Clear()を呼び出してキューを空にしています。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("Gary");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");
        queue.Enqueue("Mark");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");

        Console.Write("Count of elements = ");
        Console.WriteLine(queue.Count);

        queue.Clear();

        Console.Write("Count of elements (updated) = ");
        Console.WriteLine(queue.Count);
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Count of elements = 8
Count of elements (updated) = 0

Clear()を呼び出した後、要素数が0になっていることが確認できます。このように、Queue<T>クラスを使いこなすことで、FIFOの特性を活かした柔軟なデータ管理が可能になります。

  1. C#のQueue(キュー)クラスとは?FIFOの基本とEnqueue・Dequeueの使い方

    C#のキュー(Queue)とは キュー(Queue)は、オブジェクトを「先入れ先出し(FIFO:First-In, First-Out)」で管理するコレクションです。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの順番待ちや処理の履歴管理など、追加された順序どおりに要素へアクセスしたい場面で活用されます。 要素をキューに追加することを「エンキュー(Enqueue)」、キューから要素を取り出すことを「デキュー(Dequeue)」と呼びます。 要素の追加:Enqueueメソッド キューに要素を追加するには、Enqueueメソッドを使用します。 Queue q = new Qu

  2. Pythonのキュー(Queue)とは?FIFOの仕組みと3つの実装方法を例付きで解説

    キュー(Queue)は、先入れ先出し(First In First Out:FIFO)の仕組みで動作する線形データ構造です。最初に追加された要素が、最初に処理されます。身近な例で理解するキューの動作は、バス停の行列にたとえると分かりやすくなります。バス停に最初に到着した人が列の先頭に立ち、その後に来た人々は順番に後ろへ並んでいきます。バスが到着すると、最初に並んだ人から順に乗車し、以降も到着順に乗っていきます。このように「先に入ったものが先に出る」というFIFOの仕組みが、まさにキューの動作そのものです。Pythonにおけるキューの実装方法Pythonでは、リストなどの基本的なデータ構造や標準