Queue 클래스

정의

개체의 첫 번째 아웃 컬렉션을 나타냅니다.

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Queue : ICloneable, System.Collections.ICollection
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface IEnumerable
[<System.Serializable>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
상속
Queue
특성
구현

예제

다음 예제에서는 a에 값을 만들고 추가하는 방법과 해당 값을 Queue 출력하는 방법을 보여 있습니다.

 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


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

설명

이 클래스는 큐를 순환 배열로 구현합니다. 한 Queue 쪽 끝에 저장된 개체는 한쪽 끝에 삽입되고 다른 쪽에서 제거됩니다.

Important

새 개발에 클래스를 Queue 사용하지 않는 것이 좋습니다. 대신 제네릭 Queue<T> 클래스를 사용하는 것이 좋습니다. 자세한 내용은 GitHub에서 제네릭이 아닌 컬렉션을 사용하면 안 됨 을 참조하세요.

큐 및 스택은 정보를 위해 임시 스토리지가 필요한 경우에 유용합니다. 즉, 해당 값을 검색한 후 요소를 삭제할 수 있습니다. 컬렉션에 저장된 것과 동일한 순서로 정보에 액세스해야 하는 경우 사용합니다 Queue . 역순으로 정보에 액세스해야 하는 경우 사용합니다 Stack . 여러 스레드에서 동시에 컬렉션에 액세스해야 하는 경우 또는 ConcurrentQueue<T> 사용합니다ConcurrentStack<T>.

a 및 해당 요소에 대해 Queue 다음 세 가지 주요 작업을 수행할 수 있습니다.

  • Enqueue 의 끝에 요소를 추가합니다 Queue.

  • Dequeue 에서 가장 오래된 요소를 Queue제거합니다.

  • Peek 는 시작 Queue 부분에 있지만 제거하지 Queue않는 가장 오래된 요소를 반환합니다.

용량 Queue 은 보유할 수 있는 Queue 요소의 수입니다. 요소가 추가 Queue되면 재할당을 통해 필요에 따라 용량이 자동으로 증가합니다. 를 호출 TrimToSize하여 용량을 줄일 수 있습니다.

증가율은 더 큰 용량이 필요할 때 현재 용량을 곱한 수입니다. 증가율은 생성될 Queue 때 결정됩니다. 기본 증가율은 2.0입니다. 증가율에 Queue 관계없이 용량은 항상 최소 4개 이상 증가합니다. 예를 들어 Queue 증가율이 1.0인 a는 더 큰 용량이 필요할 때 항상 4씩 용량을 증가합니다.

Queuenull 유효한 값으로 허용되고 중복 요소를 허용합니다.

이 컬렉션의 제네릭 버전은 System.Collections.Generic.Queue<T>

생성자

Name Description
Queue()

비어 있고, 기본 초기 용량을 가지며, 기본 증가율을 사용하는 클래스의 새 인스턴스 Queue 를 초기화합니다.

Queue(ICollection)

지정된 컬렉션에서 복사한 요소가 포함된 클래스의 Queue 새 인스턴스를 초기화하고, 복사된 요소 수와 동일한 초기 용량을 가지며, 기본 증가율을 사용합니다.

Queue(Int32, Single)

비어 있고, 지정된 초기 용량을 가지며, 지정된 증가율을 사용하는 클래스의 새 인스턴스 Queue 를 초기화합니다.

Queue(Int32)

비어 있고, 지정된 초기 용량을 가지며, 기본 증가율을 사용하는 클래스의 새 인스턴스 Queue 를 초기화합니다.

속성

Name Description
Count

에 포함된 Queue요소 수를 가져옵니다.

IsSynchronized

Queue 대한 액세스가 동기화되는지 여부를 나타내는 값을 가져옵니다(스레드로부터 안전).

SyncRoot

Queue대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.

메서드

Name Description
Clear()

에서 모든 개체를 Queue제거합니다.

Clone()

의 단순 복사본을 Queue만듭니다.

Contains(Object)

요소가 .에 Queue있는지 여부를 확인합니다.

CopyTo(Array, Int32)

지정된 배열 인덱스에서 Queue 시작하여 요소를 기존 1차원 Array으로 복사합니다.

Dequeue()

의 시작 부분에 있는 개체를 제거하고 반환합니다 Queue.

Enqueue(Object)

의 끝에 개체를 추가합니다 Queue.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetEnumerator()

를 반복하는 열거자를 반환합니다 Queue.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Peek()

개체를 제거하지 않고 시작 부분에 있는 Queue 개체를 반환합니다.

Synchronized(Queue)

원래 큐를 래핑하고 스레드로부터 안전한 새 Queue 큐를 반환합니다.

ToArray()

요소를 새 배열에 복사합니다 Queue .

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
TrimToSize()

용량을 의 실제 요소 수로 Queue설정합니다.

확장명 메서드

Name Description
AsParallel(IEnumerable)

쿼리의 병렬 처리를 사용하도록 설정합니다.

AsQueryable(IEnumerable)

IEnumerable IQueryable변환합니다.

Cast<TResult>(IEnumerable)

IEnumerable 요소를 지정된 형식으로 캐스팅합니다.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable 요소를 필터링합니다.

적용 대상

스레드 보안

이 형식의 공용 정적(Shared Visual Basic) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하게 보호되지 않습니다.

스레드의 Queue안전을 보장하려면 메서드에서 반환 Synchronized(Queue) 된 래퍼를 통해 모든 작업을 수행해야 합니다.

컬렉션을 열거하는 것은 본질적으로 스레드로부터 안전한 프로시저가 아닙니다. 컬렉션이 동기화된 경우에도 다른 스레드는 컬렉션을 수정할 수 있으므로 열거자가 예외를 throw합니다. 열거 중 스레드 안전을 보장하기 위해 전체 열거 중에 컬렉션을 잠그거나 다른 스레드의 변경으로 인한 예외를 catch할 수 있습니다.

추가 정보