Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 큐(Queue) 클래스 활용법 – 주요 메서드와 예제 코드로 배우기


C#의 Queue<T> 클래스는 선입선출(FIFO, First-In-First-Out) 방식으로 객체를 저장하는 컬렉션입니다. 가장 먼저 넣은 요소가 가장 먼저 빠져나오는 구조이기 때문에, 작업 대기열 처리나 순차 실행이 필요한 프로그램에서 자주 활용됩니다.

아래 표는 Queue<T> 클래스에서 자주 사용되는 주요 메서드를 정리한 것입니다.

Queue<T> 클래스의 주요 메서드

번호메서드 및 설명
1Clear()
Queue<T>에서 모든 객체를 제거합니다.
2Contains(T)
특정 요소가 Queue<T>에 포함되어 있는지 확인합니다.
3CopyTo(T[], Int32)
지정한 배열 인덱스부터 시작하여 Queue<T>의 요소를 기존 1차원 배열에 복사합니다.
4Dequeue()
Queue<T>의 맨 앞에 있는 객체를 제거하면서 반환합니다.
5Enqueue(T)
Queue<T>의 맨 뒤에 객체를 추가합니다.
6Equals(Object)
지정한 개체가 현재 개체와 같은지 확인합니다. (Object에서 상속)
7GetEnumerator()
Queue<T> 전체를 반복할 수 있는 열거자(Enumerator)를 반환합니다.
8GetHashCode()
기본 해시 함수 역할을 합니다. (Object에서 상속)
9GetType()
현재 인스턴스의 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