C#의 Queue.Enqueue() 메서드는 큐(Queue)의 맨 뒤에 객체를 추가할 때 사용합니다. 큐는 선입선출(FIFO, First-In-First-Out) 방식으로 동작하는 자료구조이기 때문에, Enqueue()로 추가된 요소는 항상 대기열의 끝에 순서대로 저장됩니다.
구문
메서드 구문은 다음과 같습니다.
public virtual void Enqueue (object ob);
여기서 매개변수 ob는 큐에 추가할 객체를 의미합니다.
예제 1
먼저 기본적인 사용 예제를 살펴보겠습니다.
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);
Console.WriteLine("Queue...");
foreach(string i in queue){
Console.WriteLine(i);
}
queue.Dequeue();
queue.Dequeue();
Console.WriteLine("Queue...UPDATED");
foreach(string i in queue){
Console.WriteLine(i);
}
Console.Write("Count of elements (updated) = "+queue.Count);
queue.Clear();
Console.Write("\nCount of elements (updated AGAIN) = ");
Console.WriteLine(queue.Count);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Count of elements = 8 Queue... Gary Jack Ryan Kevin Mark Jack Ryan Kevin Queue...UPDATED Ryan Kevin Mark Jack Ryan Kevin Count of elements (updated) = 6 Count of elements (updated AGAIN) = 0
실행 결과를 보면 Enqueue()로 8개의 요소가 추가된 후, Dequeue()를 두 번 호출하여 큐 맨 앞의 "Gary"와 "Jack"이 제거되어 요소 수가 6개로 줄어든 것을 확인할 수 있습니다. 마지막으로 Clear() 메서드를 호출하면 큐의 모든 요소가 삭제되어 Count가 0이 됩니다.
예제 2
이번에는 초기 생성 후 중간에 요소를 추가로 삽입하는 예제입니다.
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");
Console.WriteLine("Queue...");
foreach(string i in queue){
Console.WriteLine(i);
}
Console.Write("Count of elements = ");
Console.WriteLine(queue.Count);
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
Console.WriteLine("\nQueue...UPDATED");
foreach(string i in queue){
Console.WriteLine(i);
}
Console.Write("Count of elements (Updated) = ");
Console.WriteLine(queue.Count);
queue.Dequeue();
queue.Dequeue();
Console.WriteLine("\nQueue...UPDATED");
foreach(string i in queue){
Console.WriteLine(i);
}
Console.Write("Count of elements = ");
Console.WriteLine(queue.Count);
queue.Clear();
Console.Write("\nCount of elements (updated AGAIN) = ");
Console.WriteLine(queue.Count);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Queue... Gary Jack Ryan Kevin Mark Count of elements = 5 Queue...UPDATED Gary Jack Ryan Kevin Mark Jack Ryan Kevin Count of elements (Updated) = 8 Queue...UPDATED Ryan Kevin Mark Jack Ryan Kevin Count of elements = 6 Count of elements (updated AGAIN) = 0
정리하면, Enqueue()는 언제든지 큐의 끝에 새로운 요소를 추가할 수 있으며, Dequeue()는 큐의 맨 앞에서 요소를 제거하고 반환합니다. 이 두 메서드를 조합하면 작업 대기열 처리, 버퍼 관리, 스케줄링 등 다양한 시나리오에서 효율적으로 활용할 수 있습니다.