C#프로그래밍

컬렉션 [제네릭 - List<T>, Dictonary <TKey, TValue>, Queue<T>, Stack<T>]

다모아 2023. 7. 26. 11:43

1. 제네릭

List<T> : 인덱스로 액세스할 수 있는 개체 목록을 나타냅니다. 목록의 검색, 정렬 및 수정에 사용할 수 있는 메서드를 제공합니다.

using System;
using System.Collections;
using System.Collections.Generic;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //동적 배열
            //리스트 형식 변수 정의
            List<string> itemNames;

            //컬렉션 인스턴스화 == 리스트 인스턴스화
            itemNames = new List<string>();

            //요소에 값을 할당
            //itemNames.Add(1234);
            itemNames.Add("장검");
            Console.WriteLine(itemNames.Count); //1 : 요소의 수
            itemNames.Add("단검");
            Console.WriteLine(itemNames.Count); //2 : 요소의 수

            //List는 동적 "배열", 인덱스로 요소에 접근 가능
            string name0 = itemNames[0];
            Console.WriteLine(name0);

            itemNames.Remove("장검");
            Console.WriteLine(itemNames.Count); //1 : 요소의 수

            //순회
            for (int i = 0; i < itemNames.Count; i++)
            {
                Console.WriteLine(itemNames[i]);
            }
            foreach (string name in itemNames)
            {
                Console.WriteLine(name);
            }
        }
    }
}

 

Dictonary <TKey, TValue> : 키에 따라 구성된 키/값 쌍의 컬렉션을 나타냅니다.

using System;
using System.Collections;
using System.Collections.Generic;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //Dictionary : 키 / 값 쌍으로 데이터를 저장 관리하는 컬렉션
            
            //변수정의
            Dictionary<int, string> dic;

            //인스턴스화 --> 반드시 해야함
            dic = new Dictionary<int, string>();

            //넣기
            dic.Add(100, "장검");
            //dic.Add(100, "단검"); // 동일한 키 사용 안됌
            dic.Add(101, "단검");
            // 요소에 접근
            string name101 = dic[101];
            Console.WriteLine(name101); //단검

            //string name102 = dic[102]; // 동일한 키 사용 불가
            //순회
            foreach(KeyValuePair<int, string> pair in dic)
            {
                Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
            }
            //지우기
            dic.Remove(100);
            //요소의 수
            Console.WriteLine(dic.Count);
        }
    }
}

 

Queue<T>

using System;
using System.Collections;
using System.Collections.Generic;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //컬렉션 인스턴스화
            Queue<string> q = new Queue<string>();
            //요소 넣기
            q.Enqueue("장검");
            q.Enqueue("단검");
            q.Enqueue("활");
            q.Enqueue(null);
            //요소 제거
            string element = q.Dequeue();
            Console.WriteLine(element);
            //시작 부분에 값을 제거하지않고 반환, 가장 앞에 있는 요소 값 확인
            q.Peek();
            //요소의 수 출력
            Console.WriteLine(q.Count);
            //순회
            foreach(string s in q)
            {
                Console.WriteLine(s);
            }
        }
    }
}

 

Stack<T>

using System;
using System.Collections;
using System.Collections.Generic;

namespace Game2048
{
    public class App
    {
        //생성자
        public App()
        {
            //인스턴스화
            Stack<int> stack = new Stack<int>();
            //요소 넣기
            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            //요소 제거
            int pop = stack.Pop();
            Console.WriteLine(pop);
            //요소 확인
            int peek = stack.Peek();
            Console.WriteLine(peek);
            //요소의 수 출력
            Console.WriteLine(stack.Count);
            //순회
            foreach(int i in stack)
            {
                Console.WriteLine(i);
            }
        }
    }
}