C#

[C#] 컬렉션

Prooni 2024. 10. 7. 14:58

안녕하세요!

오늘은 C#의 컬렉션에 대해 공부해요~

 

컬렉션은 한마디로 같은 성격의 데이터 모음을 담는 자료구조를 뜻하는데요.

.NET에서 제공하는 여러 컬렉션들이 있지만 몇가지만 알아볼게요!

종류는 아래와 같습니다!

ArrayList,

Queue,

Stack,

HashTable

 

먼저 ArraList에 대해 알아볼게요.

ArrayList는 배열과 비슷해보이지만

배열과는 다르게

컬렉션을 생성할 때 용량을 미리 지정할 필요 없이 필요에 따라

자동으로 그 용량이 늘어나거나 줄어들어요!

 

Add() : 컬렉션의 마지막 요소 뒤에 새 요소를 추가

RemoveAt() : 특정 인덱스에 있는 요소를 제거

Insert() : 원하는 위치에 새 요소 삽입

 

예제 코드 첨부할게요.

class MainApp
{
    static void Main(string[] args)
    {
        ArrayList list = new ArrayList();
        for(int i = 0; i < 5; i++)
        {
            list.Add(i);
        }

        foreach(object obj in list)
        {
            Console.Write($"{obj} ");
        }
        Console.WriteLine();

        list.RemoveAt(2);

        foreach(object obj in list)
        {
            Console.Write($"{obj} ");
        }
        Console.WriteLine();

        list.Insert(2, 2);

        foreach(object obj in list)
        {
            Console.Write($"{obj} ");
        }
        Console.WriteLine();

        list.Add("abc");
        list.Add("def");

        for(int i = 0; i <list.Count; i++)
        {
            Console.Write($"{list[i]} ");
        }
        Console.WriteLine();
    }
}

 

다음은 Queue에 대해 알아볼게요.

Queue는 입력은 뒤, 출력은 앞에서 이루어져요

 

Enqueue() : 데이터를 맨 뒤에 추가

Dequeue() : 맨 앞 데이터를 반환하고 삭제 후 그 다음 데이터를 맨앞으로 끌어옴

예시코드 첨부할게요.

class MainApp
{
    static void Main(string[] args)
    {
        Queue que = new Queue();
        que.Enqueue(1);
        que.Enqueue(2);
        que.Enqueue(3);
        que.Enqueue(4);
        que.Enqueue(5);

        while(que.Count > 0)
        {
            Console.WriteLine(que.Dequeue());
        }
    }
}

 

다음은 스택에 대해 알아볼게요.

스택은 LIFO(Last In First Out) 형태로 가장 나중에 들어간 데이터를 반환해요

 

Push() : 데이터를 위에 쌓음

Pop() : 가장 위에 있는 데이터를 반환하고 삭제

 

예시코드 추가할게요.

class MainApp
{
    static void Main(string[] args)
    {
        Stack stack = new Stack();
        stack.Push(1);
        stack.Push(2);
        stack.Push(3);
        stack.Push(4);
        stack.Push(5);

        while(stack.Count > 0)
        {
            Console.WriteLine(stack.Pop());
        }
    }
}

 

마지막으로 해시테이블에 대해 알아볼게요.

해시테이블은 키, 값 쌍으로 이루어진 데이터를 다룰 때 사용해요

 

탐색 속도가 빠르다는 장점이 있답니다.

키를 이용해서 데이터가 저장된 컬렉션 내의 주소를 계산해내는데 이것을 해싱이라고 해요!

 

예제 코드 첨부할게요.

class MainApp
{
    static void Main(string[] args)
    {
        Hashtable ht = new Hashtable();
        ht["하나"] = "one";
        ht["둘"] = "two";
        ht["셋"] = "three";
        ht["넷"] = "four";
        ht["다섯"] = "five";

        Console.WriteLine(ht["하나"]);
        Console.WriteLine(ht["둘"]);
        Console.WriteLine(ht["셋"]);
        Console.WriteLine(ht["넷"]);
        Console.WriteLine(ht["다섯"]);
    }
}

 

'C#' 카테고리의 다른 글

[C#] Generic T 일반화 프로그래밍  (0) 2024.10.08
[C#] 인덱서  (0) 2024.10.07
[C#] 배열  (0) 2024.10.07
[C#] 프로퍼티  (1) 2024.10.06
[C#] 얕은 복사와 깊은 복사 - 설명 및 예제 코드  (0) 2024.10.05