큐(Queue)는 선입선출(FIFO, First-In First-Out) 방식으로 객체를 저장하는 컬렉션입니다. 이름 그대로 먼저 들어온 데이터가 먼저 나가는 구조로, 작업 대기열 처리나 순차적인 데이터 관리처럼 항목에 순서대로 접근해야 하는 상황에서 유용하게 사용됩니다.
큐에 새 항목을 추가하는 동작은 인큐(Enqueue), 기존 항목을 제거하는 동작은 디큐(Dequeue)라고 부릅니다.
Queue 클래스의 주요 메서드
다음 표는 C# Queue 클래스에서 자주 사용되는 메서드들을 정리한 것입니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | public virtual void Clear(); 큐에 있는 모든 요소를 제거합니다. |
| 2 | public virtual bool Contains(object obj); 특정 요소가 큐 안에 존재하는지 여부를 확인합니다. |
| 3 | public virtual object Dequeue(); 큐의 맨 앞에 있는 객체를 제거하고 해당 객체를 반환합니다. |
| 4 | public virtual void Enqueue(object obj); 큐의 맨 뒤에 객체를 추가합니다. |
| 5 | public virtual object[] ToArray(); 큐의 내용을 새로운 배열로 복사합니다. |
Queue 클래스 사용 예제
아래 예제는 Queue 클래스를 활용해 요소를 추가하고 출력하는 과정을 보여줍니다.
using System;
using System.Collections;
namespace Demo {
class Program {
static void Main(string[] args) {
Queue q = new Queue();
// 요소 추가 (Enqueue)
q.Enqueue('X');
q.Enqueue('Y');
q.Enqueue('Z');
Console.WriteLine("현재 큐:");
foreach (char c in q) Console.Write(c + " ");
Console.WriteLine();
// 새 요소 'A' 추가
q.Enqueue('A');
Console.WriteLine("현재 큐:");
foreach (char c in q) Console.Write(c + " ");
Console.WriteLine();
Console.ReadKey();
}
}
}실행 결과
현재 큐: X Y Z 현재 큐: X Y Z A
위 실행 결과에서 볼 수 있듯이, Enqueue() 메서드로 추가된 요소 'A'는 큐의 맨 뒤에 배치됩니다. 만약 이 상태에서 Dequeue()를 호출하면 가장 먼저 들어간 'X'가 제거되고 반환되는데, 이것이 바로 큐의 핵심 특징인 선입선출(FIFO) 구조입니다.