Queue 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개체의 첫 번째 아웃 컬렉션을 나타냅니다.
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 다음 세 가지 주요 작업을 수행할 수 있습니다.
용량 Queue 은 보유할 수 있는 Queue 요소의 수입니다. 요소가 추가 Queue되면 재할당을 통해 필요에 따라 용량이 자동으로 증가합니다. 를 호출 TrimToSize하여 용량을 줄일 수 있습니다.
증가율은 더 큰 용량이 필요할 때 현재 용량을 곱한 수입니다. 증가율은 생성될 Queue 때 결정됩니다. 기본 증가율은 2.0입니다. 증가율에 Queue 관계없이 용량은 항상 최소 4개 이상 증가합니다. 예를 들어 Queue 증가율이 1.0인 a는 더 큰 용량이 필요할 때 항상 4씩 용량을 증가합니다.
Queue 는 null 유효한 값으로 허용되고 중복 요소를 허용합니다.
이 컬렉션의 제네릭 버전은 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) | |
| 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할 수 있습니다.