Queue Queue Queue Queue Class

定義

オブジェクトの先入れ先出しコレクションを表します。Represents a first-in, first-out collection of objects.

public ref class Queue : ICloneable, System::Collections::ICollection
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface ICloneable
    interface IEnumerable
Public Class Queue
Implements ICloneable, ICollection
継承
QueueQueueQueueQueue
属性
実装

次の例では、 Queueに値を作成して追加する方法と、値を出力する方法を示します。The following example shows how to create and add values to a Queue and how to print out its values.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
   
   // Creates and initializes a new Queue.
   Queue^ myQ = gcnew Queue;
   myQ->Enqueue( "Hello" );
   myQ->Enqueue( "World" );
   myQ->Enqueue( "!" );
   
   // Displays the properties and values of the Queue.
   Console::WriteLine( "myQ" );
   Console::WriteLine( "\tCount:    {0}", myQ->Count );
   Console::Write( "\tValues:" );
   PrintValues( myQ );
}

void PrintValues( IEnumerable^ myCollection )
{
   IEnumerator^ myEnum = myCollection->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "    {0}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 myQ
     Count:    3
     Values:    Hello    World    !
*/
 using System;
 using System.Collections;
 public class SamplesQueue  {
 
    public static void Main()  {
 
       // Creates and initializes a new Queue.
       Queue myQ = new Queue();
       myQ.Enqueue("Hello");
       myQ.Enqueue("World");
       myQ.Enqueue("!");
 
       // Displays the properties and values of the Queue.
       Console.WriteLine( "myQ" );
       Console.WriteLine( "\tCount:    {0}", myQ.Count );
       Console.Write( "\tValues:" );
       PrintValues( myQ );
    }
 
 
    public static void PrintValues( IEnumerable myCollection )  {
       foreach ( Object obj in myCollection )
          Console.Write( "    {0}", obj );
       Console.WriteLine();
    }
 }
 /* 
 This code produces the following output.
 
 myQ
     Count:    3
     Values:    Hello    World    !
*/ 
Imports System.Collections

Public Class SamplesQueue

    Public Shared Sub Main()

        ' Creates and initializes a new Queue.
        Dim myQ As New Queue()
        myQ.Enqueue("Hello")
        myQ.Enqueue("World")
        myQ.Enqueue("!")

        ' Displays the properties and values of the Queue.
        Console.WriteLine("myQ")
        Console.WriteLine("    Count:    {0}", myQ.Count)
        Console.Write("    Values:")
        PrintValues(myQ)

    End Sub

    Public Shared Sub PrintValues(myCollection As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myCollection
            Console.Write("    {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class 'SamplesQueue


' This code produces the following output.
' 
' myQ
'     Count:    3
'     Values:    Hello    World    !

注釈

このクラスは、キューを循環配列として実装します。This class implements a queue as a circular array. に格納されQueueているオブジェクトは、一方の端に挿入され、もう一方からは削除されます。Objects stored in a Queue are inserted at one end and removed from the other.

重要

新しい開発にはQueueクラスを使用しないことをお勧めします。We don't recommend that you use the Queue class for new development. 代わりに、ジェネリックQueue<T>クラスを使用することをお勧めします。Instead, we recommend that you use the generic Queue<T> class. 詳細については、「GitHub で非ジェネリックコレクションを使用することはできません。」を参照してください。For more information, see Non-generic collections shouldn't be used on GitHub.

キューとスタックは、情報のために一時的なストレージが必要な場合に便利です。つまり、値を取得した後に要素を破棄することが必要になる場合があります。Queues and stacks are useful when you need temporary storage for information; that is, when you might want to discard an element after retrieving its value. コレクションQueueに格納されているのと同じ順序で情報にアクセスする必要がある場合は、を使用します。Use Queue if you need to access the information in the same order that it is stored in the collection. 情報Stackに逆の順序でアクセスする必要がある場合は、を使用します。Use Stack if you need to access the information in reverse order. 複数ConcurrentQueue<T>ConcurrentStack<T>スレッドから同時にコレクションにアクセスする必要がある場合は、またはを使用します。Use ConcurrentQueue<T> or ConcurrentStack<T> if you need to access the collection from multiple threads concurrently.

とその要素に対して、次Queueの3つの主要な操作を実行できます。Three main operations can be performed on a Queue and its elements:

  • Enqueueの末尾に要素を追加しQueueます。Enqueue adds an element to the end of the Queue.

  • Dequeueの先頭から最も古い要素を削除Queueします。Dequeue removes the oldest element from the start of the Queue.

  • Peekの先頭Queueにある最も古い要素を返しますが、 Queueからは削除しません。Peek returns the oldest element that is at the start of the Queue but does not remove it from the Queue.

Queueの容量は、Queueが保持できる要素の数です。The capacity of a Queue is the number of elements the Queue can hold. 要素がにQueue追加されると、再割り当てによって必要に応じて容量が自動的に増加します。As elements are added to a Queue, the capacity is automatically increased as required through reallocation. を呼び出すTrimToSizeと、容量を減らすことができます。The capacity can be decreased by calling TrimToSize.

増加率は、より大きな容量が必要な場合に現在の容量を乗算する際に使用される数値です。The growth factor is the number by which the current capacity is multiplied when a greater capacity is required. 増加率は、 Queueが構築されるときに決定されます。The growth factor is determined when the Queue is constructed. 既定の増加率は2.0 です。The default growth factor is 2.0. の容量Queueは、増加率に関係なく、少なくとも4つの値によって常に増加します。The capacity of the Queue will always increase by at least a minimum of four, regardless of the growth factor. たとえば、 Queue増加率が1.0 のの場合は、容量が必要になると常に4つ増加します。For example, a Queue with a growth factor of 1.0 will always increase in capacity by four when a greater capacity is required.

Queuenull 、有効な値としてを受け入れ、重複する要素を許可します。Queue accepts null as a valid value and allows duplicate elements.

このコレクションのジェネリックバージョンについては、「」を参照してください。System.Collections.Generic.Queue<T>For the generic version of this collection, see System.Collections.Generic.Queue<T>

コンストラクター

Queue() Queue() Queue() Queue()

空で、既定の初期量を備え、既定の増加率を使用する、Queue クラスの新しいインスタンスを初期化します。Initializes a new instance of the Queue class that is empty, has the default initial capacity, and uses the default growth factor.

Queue(ICollection) Queue(ICollection) Queue(ICollection) Queue(ICollection)

指定したコレクションからコピーした要素を格納し、コピーした要素の数と同じ初期量を備え、既定の増加率を使用する、Queue クラスの新しいインスタンスを初期化します。Initializes a new instance of the Queue class that contains elements copied from the specified collection, has the same initial capacity as the number of elements copied, and uses the default growth factor.

Queue(Int32) Queue(Int32) Queue(Int32) Queue(Int32)

空で、指定した初期量を備え、既定の増加率を使用する、Queue クラスの新しいインスタンスを初期化します。Initializes a new instance of the Queue class that is empty, has the specified initial capacity, and uses the default growth factor.

Queue(Int32, Single) Queue(Int32, Single) Queue(Int32, Single) Queue(Int32, Single)

空で、指定した初期量を備え、指定した増加率を使用する、Queue クラスの新しいインスタンスを初期化します。Initializes a new instance of the Queue class that is empty, has the specified initial capacity, and uses the specified growth factor.

プロパティ

Count Count Count Count

Queue に格納されている要素の数を取得します。Gets the number of elements contained in the Queue.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Queue へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value indicating whether access to the Queue is synchronized (thread safe).

SyncRoot SyncRoot SyncRoot SyncRoot

Queue へのアクセスを同期するために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the Queue.

メソッド

Clear() Clear() Clear() Clear()

Queue からすべてのオブジェクトを削除します。Removes all objects from the Queue.

Clone() Clone() Clone() Clone()

Queue の簡易コピーを作成します。Creates a shallow copy of the Queue.

Contains(Object) Contains(Object) Contains(Object) Contains(Object)

ある要素が Queue 内に存在するかどうかを判断します。Determines whether an element is in the Queue.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Queue の要素を既存の 1 次元の Array にコピーします。コピー操作は、配列内の指定したインデックスから始まります。Copies the Queue elements to an existing one-dimensional Array, starting at the specified array index.

Dequeue() Dequeue() Dequeue() Dequeue()

Queue の先頭にあるオブジェクトを削除し、返します。Removes and returns the object at the beginning of the Queue.

Enqueue(Object) Enqueue(Object) Enqueue(Object) Enqueue(Object)

Queue の末尾にオブジェクトを追加します。Adds an object to the end of the Queue.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Queue を反復処理する列挙子を返します。Returns an enumerator that iterates through the Queue.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Peek() Peek() Peek() Peek()

Queue の先頭にあるオブジェクトを削除せずに返します。Returns the object at the beginning of the Queue without removing it.

Synchronized(Queue) Synchronized(Queue) Synchronized(Queue) Synchronized(Queue)

元のキューをラップする、スレッド セーフである新しい Queue を返します。Returns a new Queue that wraps the original queue, and is thread safe.

ToArray() ToArray() ToArray() ToArray()

Queue の要素を新しい配列にコピーします。Copies the Queue elements to a new array.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)
TrimToSize() TrimToSize() TrimToSize() TrimToSize()

容量を Queue 内にある実際の要素数に設定します。Sets the capacity to the actual number of elements in the Queue.

拡張メソッド

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

適用対象

スレッド セーフ

パブリック静的 (Visual Basic ではShared) なこの型のメンバーはスレッド セーフですPublic static (Shared in Visual Basic) members of this type are thread safe. インスタンス メンバーの場合は、スレッド セーフであるとは限りません。Any instance members are not guaranteed to be thread safe.

Queueスレッドセーフを保証するには、 Synchronized(Queue)メソッドによって返されるラッパーを使用してすべての操作を行う必要があります。To guarantee the thread safety of the Queue, all operations must be done through the wrapper returned by the Synchronized(Queue) method.

コレクションの列挙は、本質的にスレッド セーフなプロシージャではありません。Enumerating through a collection is intrinsically not a thread-safe procedure. コレクションの同期がとられている場合でも、別のスレッドによってそのコレクションを変更できるため、変更の結果として列挙子は例外をスローします。Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

こちらもご覧ください