C#에서 Queue<T>(대기열)에 저장된 요소들을 배열(Array)로 변환하려면 ToArray() 메서드를 사용하면 됩니다. 이 메서드는 큐에 들어있는 모든 요소를 기존 순서 그대로 새로운 배열에 복사하여 반환합니다.
큐는 FIFO(First In, First Out, 선입선출) 구조로 동작하며, Enqueue() 메서드로 요소를 추가하고 Dequeue() 또는 foreach 반복문으로 요소를 확인할 수 있습니다. 아래 예제를 통해 실제 변환 과정을 살펴보겠습니다.
예제 1: int형 Queue를 배열로 변환하기
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Queue<int> queue = new Queue<int>();
queue.Enqueue(100);
queue.Enqueue(200);
queue.Enqueue(300);
queue.Enqueue(400);
queue.Enqueue(500);
queue.Enqueue(600);
queue.Enqueue(700);
queue.Enqueue(800);
queue.Enqueue(900);
queue.Enqueue(1000);
Console.WriteLine("Queue...");
foreach (int i in queue) {
Console.WriteLine(i);
}
// ToArray() 메서드로 큐를 배열로 변환
int[] intArr = queue.ToArray();
Console.WriteLine("Convert Queue to Array...");
foreach (int i in intArr) {
Console.WriteLine(i);
}
}
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다.
Queue... 100 200 300 400 500 600 700 800 900 1000 Convert Queue to Array... 100 200 300 400 500 600 700 800 900 1000
출력 결과에서 볼 수 있듯이, ToArray()를 통해 생성된 배열은 원본 큐와 동일한 순서로 요소를 유지합니다.
예제 2: string형 Queue를 배열로 변환하기
이번에는 문자열 타입의 큐를 배열로 변환하는 예제입니다. 제네릭 타입만 다를 뿐, 사용 방식은 완전히 동일합니다.
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");
Console.WriteLine("Array...");
foreach (string i in queue) {
Console.WriteLine(i);
}
// ToArray() 메서드로 큐를 배열로 변환
string[] strArr = queue.ToArray();
Console.WriteLine("Convert Queue to Array...");
foreach (string i in strArr) {
Console.WriteLine(i);
}
}
}
실행 결과
위 코드를 실행하면 다음과 같이 출력됩니다.
Array... A B C D E F Convert Queue to Array... A B C D E F
핵심 정리
Queue<T>.ToArray()메서드는 큐의 모든 요소를T[]형태의 배열로 복사해 반환합니다.- 변환된 배열은 큐에 삽입된 원래 순서를 그대로 유지합니다.
ToArray()호출 후에도 원본 큐는 변경되지 않으며, 그대로 계속 사용할 수 있습니다.- 이 메서드는 O(n) 연산으로, 큐의 요소 개수(n)에 비례하여 시간이 소요됩니다.