C#/C#200제

[C#] 16일차 - 108. Queue<T> 컬렉션의 사용 방법

반나무 2021. 2. 14. 10:25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A108_Queue
{
    class Program
    {
        static void Main(string[] args)
        {
            Queue<string> que = new Queue<string>();
            que.Enqueue("Tiger");
            que.Enqueue("Lion");
            que.Enqueue("Zebra");
            que.Enqueue("Cow");
            que.Enqueue("Rabbit");
            
            PrintQueue("que : ", que);

            Console.WriteLine(" Dequeuing '{0}'", que.Dequeue()); // 맨 앞 출력 후 사라짐
            Console.WriteLine(" Peek : '{0}'", que.Peek()); // 맨 앞 출력 후 사라지지않음

            Queue<string> que2 = new Queue<string>(que.ToArray()); // que를 que2에 복사
            PrintQueue("que2 : ", que2);

            string[] array = new string[que.Count]; // que의 크기로 배열을 만들고 
            que.CopyTo(array,0); // que의 값을 array에 복사

            Queue<string> que3 = new Queue<string>(array); // 배열을 가지고 que3를 만듬
            PrintQueue("que3 : ", que3);

            Console.WriteLine("que.Contains(Lion) = {0}", que.Contains("Lion")); // que에 Lion이 있는지 확인
            que3.Clear(); // que3 비움
            Console.WriteLine($"Count = {que.Count}, {que2.Count}, {que3.Count}");

        }

        private static void PrintQueue(string s, Queue<string> q)
        {
            Console.Write("{0,-8}", s);
            foreach(var item in q)
                Console.Write("{0,-8}", item);
            Console.WriteLine();
        }
    }
}

반응형