C#의 Queue<T> 클래스는 선입선출(FIFO, First-In-First-Out) 방식으로 객체를 저장하는 컬렉션입니다. 가장 먼저 넣은 요소가 가장 먼저 빠져나오는 구조이기 때문에, 작업 대기열 처리나 순차 실행이 필요한 프로그램에서 자주 활용됩니다.
아래 표는 Queue<T> 클래스에서 자주 사용되는 주요 메서드를 정리한 것입니다.
Queue<T> 클래스의 주요 메서드
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | Clear() Queue<T>에서 모든 객체를 제거합니다. |
| 2 | Contains(T) 특정 요소가 Queue<T>에 포함되어 있는지 확인합니다. |
| 3 | CopyTo(T[], Int32) 지정한 배열 인덱스부터 시작하여 Queue<T>의 요소를 기존 1차원 배열에 복사합니다. |
| 4 | Dequeue() Queue<T>의 맨 앞에 있는 객체를 제거하면서 반환합니다. |
| 5 | Enqueue(T) Queue<T>의 맨 뒤에 객체를 추가합니다. |
| 6 | Equals(Object) 지정한 개체가 현재 개체와 같은지 확인합니다. (Object에서 상속) |
| 7 | GetEnumerator() Queue<T> 전체를 반복할 수 있는 열거자(Enumerator)를 반환합니다. |
| 8 | GetHashCode() 기본 해시 함수 역할을 합니다. (Object에서 상속) |
| 9 | GetType() 현재 인스턴스의 Type을 가져옵니다. |
예제 1 – Peek()로 큐 맨 앞의 요소 확인하기
Peek() 메서드는 큐의 내용을 변경하지 않고 맨 앞에 있는 객체만 반환합니다. 아래 예제에서는 Enqueue()로 문자열 요소를 차례대로 추가한 뒤, 전체 요소 개수와 맨 앞 요소를 출력해 봅니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Queue<string> queue = new Queue<string>();
queue.Enqueue("A");
queue.Enqueue("B");
queue.Enqueue("C");
queue.Enqueue("D");
queue.Enqueue("E");
queue.Enqueue("F");
queue.Enqueue("G");
Console.WriteLine("Count of elements = " + queue.Count);
Console.WriteLine("Element at the beginning of queue = " + queue.Peek());
}
}
실행 결과
Count of elements = 7 Element at the beginning of queue = A
예제 2 – Clear()로 큐의 모든 요소 제거하기
Clear() 메서드를 호출하면 큐에 담긴 모든 객체가 한 번에 삭제되고 Count 값은 0이 됩니다. 아래 예제에서는 Clear() 호출 전후의 요소 개수를 비교하여 그 차이를 확인할 수 있습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Queue<string> queue = new Queue<string>();
queue.Enqueue("Gary");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
queue.Enqueue("Mark");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
Console.Write("Count of elements = ");
Console.WriteLine(queue.Count);
queue.Clear();
Console.Write("Count of elements (updated) = ");
Console.WriteLine(queue.Count);
}
}
실행 결과
Count of elements = 8 Count of elements (updated) = 0