English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Queue(큐)

Queue는 특별한 컬렉션 타입으로, 요소를 FIFO(先进先出) 방식으로 저장합니다. Stack <T> 컬렉션과 정반대입니다. 추가된 순서로 요소를 포함합니다. C#은 일반적인 Queue<T> 컬렉션과 일반적인 Queue 컬렉션을 포함합니다. 일반적인 Queue<T> 컬렉션을 사용하는 것이 좋습니다.

Queue <T> 특성

  • Queue<T>는 FIFO(先进先出) 컬렉션입니다.  

  • 그것은 System.Collection.Generic 이름 공간 아래에 있습니다.

  • Queue<T>는 지정된 타입의 요소를 포함할 수 있습니다. 그것은 컴파일 시 타입 체크를 제공하며, 박스링을 수행하지 않습니다./압축해제,因为它它是泛型的.

  • Enqueue() 메서드를 사용하여 요소를 추가할 수 있습니다. 컬렉션 초기화(collection-initializer) 문법.

  • Dequeue() 및 Peek() 메서드를 사용하여 요소를 검색할 수 있습니다. 인덱서를 지원하지 않습니다.

아래 그림은 Queue 컬렉션을 설명합니다:

큐 생성

Queue<T>가 저장하는 요소 타입을 지정하여 생성할 수 있습니다. 아래 예제는 Enqueue() 메서드를 사용하여 Queue<T>에 요소를 생성하고 추가합니다. Queue 컬렉션은 null (참조형 타입에 대해)과 중복 값을 허용합니다.

Queue<int> callerIds = new Queue<int>();
callerIds.Enqueue(1);
callerIds.Enqueue(2);
callerIds.Enqueue(3);
callerIds.Enqueue(4);
foreach(var id in callerIds)
    Console.Write(id); //출력1234

Queue <T> 속성과 메서드

속성사용 방법
Count큐에 있는 요소의 총 수를 반환합니다.
메서드사용 방법
Enqueue(T)항목을 큐에 추가합니다.
Dequeue큐의 시작에서 항목을 반환하고 그를 큐에서 제거합니다.
Peek(T)첫 번째 항목을 반환하지만 제거하지 않습니다.
Contains(T)항목이 큐에 있는지 확인
Clear()큐에서 모든 항목을 제거

큐에서 요소를 검색

Dequeue()와 Peek() 메서드는 큐 집합에서 첫 번째 요소를 검색하는 데 사용됩니다. Dequeue()는 FIFO 순서 큐 저장소에서 요소를 제거하고 반환합니다. 비어 있는 큐에서 Dequeue() 메서드를 호출하면 InvalidOperation 예외가 발생합니다. 따라서 큐를 호출하기 전에 항상 큐의 총 수가 0보다 크기를 확인하십시오.

Queue<string> strQ = new Queue<string>();
strQ.Enqueue("H");
strQ.Enqueue("e");
strQ.Enqueue("l");
strQ.Enqueue("l");
strQ.Enqueue("o");
Console.WriteLine("요소 총 수: {0}", strQ.Count); //출력 5
while(strQ.Count > 0){
    Console.WriteLine(strQ.Dequeue()); //출력 Hello
}
Console.WriteLine("요소 총 수: {0}", strQ.Count); //출력 H

Peek() 메서드는 항상 큐 집합에서 첫 번째 항목을 반환하며, 그를 큐에서 제거하지 않습니다. 비어 있는 큐에서 Peek() 메서드를 호출하면 InvalidOperationException 예외가 발생합니다.

Queue<string> strQ = new Queue<string>();
strQ.Enqueue("H");
strQ.Enqueue("e");
strQ.Enqueue("l");
strQ.Enqueue("l");
strQ.Enqueue("o");
Console.WriteLine("요소 총 수: {0}", strQ.Count); //출력 5
if(strQ.Count > 0){
    Console.WriteLine(strQ.Peek()); //출력 H
    Console.WriteLine(strQ.Peek()); //출력 H
}
Console.WriteLine("요소 총 수: {0}", strQ.Count); //출력 H

Contains()

Contains() 메서드는 큐에 프로젝트가 존재하는지 확인합니다. 지정된 프로젝트가 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다。

Contains() 서명:

 bool Contains(object obj);
Queue<int> callerIds = new Queue<int>();
callerIds.Enqueue(1);
callerIds.Enqueue(2);
callerIds.Enqueue(3);
callerIds.Enqueue(4);
callerIds.Contains(2); //true
callerIds.Contains(10); //false