C#은 처음이라

C# 리스트(List)

amckdgjs 2024. 3. 13. 16:58

리스트(List)는 동적배열 기반 자료구조이다. 앞선 스택과 큐와는 다르게 중간에 데이터를 삽입,삭제 할 수 있다.

배열과 비슷하지만 리스트가 자료의 입출력이 더 자유롭고 크기를 미리 정하지 않아도 되기 때문에 편리하다.

리스트 생성 및 초기화

List<string> list = new List<string>();

삽입과 삭제

 List<string> list = new List<string>();
 list.Add("0번 데이터");//배열 안에 값 삽입
 list.Add("1번 데이터");
 list.Add("2번 데이터");
 list.Add("3번 데이터");
 list.Add("4번 데이터");
 foreach(var item in list)
 {
     Console.Write(item+" -> ");
 }
 list.Insert(1,"중간 데이터 1번");
 list.Insert(3,"중간 데이터 2번");//선언한 배열 안에 값을 insert.3번째 배열에 삽입
 list.Insert(5,"중간 데이터 3번");

 Console.WriteLine();
 Console.WriteLine();
 Console.WriteLine();
 list.Remove("1번 데이터")
 list.RemoveAt(1);

list.Add : Add를 통해 값을 삽입한다.

list.Insert : 선언한 배열 안에 값을 3번째 배열에 삽입한다.

list.Remove : 같은 문자열인 "1번 데이터"를 삭제한다.

list.RemoveAt(1) : 1번 배열의 값을 삭제한다.

반복기(Iterator)

반복기는 자료구조에 저장되어 있는 요소들에 순차적으로 접근한다. 배열과 리스트 같은 컬렉션을 단계별로 끊어서 코드를 실행할 수 있도록 한다."yield"를 사용하여 반복기를 생성할 수 있다.

반복기 선언 예시 :

 void Test()
 {
     List<int> list = new List<int>() {0,1,2,3,4,5};

     //반복기 객체 생성
     IEnumerator<int> iter = list.GetEnumerator();

     //반복기 객체가 현재 가리키는 데이터 
     Console.WriteLine($"{iter.Current}");

     while (iter.MoveNext())
     {
         Console.WriteLine(iter.Current);
     }
 }

반복기는 데이터 시퀀스를 만들고 처리하는 데 유용하다. 대용량 데이터 처리 시 메모리 사용량을 최소화할 때 반복기를 사용할 수 있다.

반복기 함수 예시

using System;
using System.Collections.Generic;

class Program
{
    static IEnumerable<int> GenerateNumbers()
    {
        for (int i = 1; i <= 10; i++)
        {
            yield return i;
        }
    }

    static void Main(string[] args)
    {
        foreach (int num in GenerateNumbers())
        {
            Console.WriteLine(num);
        }
    }
}