Queue 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개체의 선입선출(FIFO) 컬렉션을 나타냅니다.
public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
public class Queue : ICloneable, 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
type Queue = class
interface ICollection
interface IEnumerable
type Queue = class
interface ICollection
interface IEnumerable
interface ICloneable
[<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
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
- 상속
-
Queue
- 특성
- 구현
예제
다음 예제에서는 만들고 에 값을 추가 하는 Queue 방법 및 해당 값을 출력 하는 방법을 보여 있습니다.
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
' This code produces the following output.
'
' myQ
' Count: 3
' Values: Hello World !
설명
이 클래스는 큐를 순환 배열로 구현합니다. 에 Queue 저장된 개체는 한쪽 끝에 삽입되고 다른 쪽 끝에서 제거됩니다.
중요
새 개발에 클래스를 Queue
사용하지 않는 것이 좋습니다. 대신 제네릭 Queue<T> 클래스를 사용하는 것이 좋습니다. 자세한 내용은 GitHub에서 제네릭이 아닌 컬렉션을 사용하면 안 됨 을 참조하세요.
큐 및 스택은 정보에 대한 임시 스토리지가 필요할 때 유용합니다. 즉, 값을 검색한 후 요소를 삭제할 수 있습니다. 컬렉션에 저장된 것과 동일한 순서로 정보에 액세스해야 하는 경우 를 사용합니다 Queue . 정보에 역순으로 액세스해야 하는 경우 를 사용합니다 Stack . 여러 스레드에서 동시에 컬렉션에 액세스해야 하는 경우 또는 ConcurrentStack<T> 를 사용합니다ConcurrentQueue<T>.
및 해당 요소에 대해 Queue 세 가지 기본 작업을 수행할 수 있습니다.
의 Queue 용량은 가 보유할 수 있는 Queue 요소의 수입니다. 요소가 에 Queue추가되면 재할당을 통해 필요에 따라 용량이 자동으로 증가합니다. 를 호출 TrimToSize하여 용량을 줄일 수 있습니다.
증가율은 더 큰 용량이 필요할 때 현재 용량을 곱한 수입니다. 증가율은 가 생성될 때 Queue 결정됩니다. 기본 증가율은 2.0입니다. 의 용량 Queue 은 증가율에 관계없이 항상 최소 4씩 증가합니다. 예를 들어 Queue 증가율이 1.0인 은 더 큰 용량이 필요할 때 항상 용량을 4씩 증가합니다.
Queue 는 null
유효한 값으로 허용되고 중복 요소를 허용합니다.
이 컬렉션의 제네릭 버전은 System.Collections.Generic.Queue<T>
생성자
Queue() |
비어 있는 상태이고 기본 초기 용량을 가지며 기본 증가 비율을 사용하는 Queue 클래스의 새 인스턴스를 초기화합니다. |
Queue(ICollection) |
지정한 컬렉션에서 복사된 요소가 포함되어 있고, 복사된 요소의 수와 같은 초기 용량을 가지며, 기본 증가 비율을 사용하는 Queue 클래스의 새 인스턴스를 초기화합니다. |
Queue(Int32) |
비어 있는 상태이고 지정한 초기 용량을 가지며 기본 증가 비율을 사용하는 Queue 클래스의 새 인스턴스를 초기화합니다. |
Queue(Int32, Single) |
비어 있는 상태이고 지정한 초기 용량을 가지며 지정한 증가 비율을 사용하는 Queue 클래스의 새 인스턴스를 초기화합니다. |
속성
Count |
Queue에 포함된 요소 수를 가져옵니다. |
IsSynchronized |
Queue에 대한 액세스가 동기화되어 스레드로부터 안전하게 보호되는지를 나타내는 값을 가져옵니다. |
SyncRoot |
Queue에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다. |
메서드
Clear() |
Queue에서 개체를 모두 제거합니다. |
Clone() |
Queue의 부분 복사본을 만듭니다. |
Contains(Object) |
Queue에 요소가 있는지 여부를 확인합니다. |
CopyTo(Array, Int32) | |
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의 실제 요소 수로 설정합니다. |
확장 메서드
Cast<TResult>(IEnumerable) |
IEnumerable의 요소를 지정된 형식으로 캐스팅합니다. |
OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable의 요소를 필터링합니다. |
AsParallel(IEnumerable) |
쿼리를 병렬화할 수 있도록 합니다. |
AsQueryable(IEnumerable) |
IEnumerable을 IQueryable로 변환합니다. |
적용 대상
스레드 보안
공용 정적 (Shared
Visual Basic의)이 형식의 멤버는 스레드로부터 안전 합니다. 인스턴스 구성원은 스레드로부터의 안전성이 보장되지 않습니다.
의 Queue스레드 안전을 보장하려면 메서드에서 반환 Synchronized(Queue) 된 래퍼를 통해 모든 작업을 수행해야 합니다.
컬렉션 전체를 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다. 컬렉션이 동기화되어 있을 때 다른 스레드에서 해당 컬렉션을 수정할 수 있으므로 이렇게 되면 열거자에서 예외가 throw됩니다. 열거하는 동안 스레드로부터 안전을 보장하려면 전체 열거를 수행하는 동안 컬렉션을 잠그거나 다른 스레드에서 변경된 내용으로 인해 발생한 예외를 catch하면 됩니다.
추가 정보
.NET