C# 컬렉션: 초보자 가이드

안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C# 컬렉션의 세계에 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라고 걱정하지 마세요 - 저는 친절한 가이드로서, 모든 것을 단계별로 설명해 드릴 것입니다. 시작해 보겠습니다!

C# - Collections

컬렉션은 무엇인가요?

상상해 보세요, 파티를 준비하고 모든 손님을 기록해야 할 때. 각 이름을 별도의 종이에 쓰는 것은 지저분하고 비효율적입니다. 대신, 손님 명단을 사용할 것입니다. C#에서 컬렉션은 그 손님 명단과 같아요 - 우리가 관련된 객체 그룹을 정리하고 관리하는 데 도움을 줍니다.

컬렉션을 사용하는 이유는 무엇인가요?

컬렉션은 매우 유용합니다. 그 이유는 다음과 같습니다:

  1. 단일 변수에 여러 항목을 저장할 수 있습니다.
  2. 항목을 쉽게 추가하거나 제거할 수 있습니다.
  3. 데이터를 검색하고 정렬할 수 있습니다.
  4. 데이터 그룹에 작업을 수행할 수 있습니다.

이제 C#에서 가장 일반적인 컬렉션 타입 중 일부를 살펴보겠습니다.

리스트: 유연한 친구

리스트는 무엇인가요?

리스트는 필요에 따라 확장되거나 축소될 수 있는 동적 배열입니다. 정확히 몇 개의 항목을 저장해야 할지 모를 때에 완벽합니다.

리스트를 어떻게 사용할까요?

우리의 좋아하는 과일 명단을 만들어 보겠습니다:

List<string> fruits = new List<string>();
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");

Console.WriteLine($"We have {fruits.Count} fruits.");
Console.WriteLine($"The second fruit is {fruits[1]}.");

이 예제에서 우리는:

  1. 새로운 문자열 리스트를 생성합니다.
  2. 세 개의 과일을 리스트에 추가합니다.
  3. Count 프로퍼티를 사용하여 과일의 수를 출력합니다.
  4. 인덱스를 사용하여 두 번째 과일에 접근합니다 (인덱스는 0에서 시작합니다!)

출력:

We have 3 fruits.
The second fruit is Banana.

사전: 성공의 열쇠

사전은 무엇인가요?

사전은 실제 세계의 사전처럼 - 키-값 쌍을 저장합니다. 각 키는 고유해야 하며, 사전의 각 단어는 자신의 정의를 가지고 있습니다.

사전을 사용하는 방법

과일의 색상을 저장하는 사전을 만들어 보겠습니다:

Dictionary<string, string> fruitColors = new Dictionary<string, string>();
fruitColors.Add("Apple", "Red");
fruitColors.Add("Banana", "Yellow");
fruitColors.Add("Grape", "Purple");

Console.WriteLine($"An apple is {fruitColors["Apple"]}.");

if (fruitColors.ContainsKey("Cherry"))
{
Console.WriteLine($"A cherry is {fruitColors["Cherry"]}.");
}
else
{
Console.WriteLine("We don't know the color of a cherry.");
}

여기서 우리는:

  1. 문자열 키와 문자열 값으로 구성된 사전을 생성합니다.
  2. 세 개의 과일-색상 쌍을 추가합니다.
  3. 과일 키를 사용하여 색상에 접근합니다.
  4. 키가 존재하는지 확인한 후 값을 접근합니다.

출력:

An apple is Red.
We don't know the color of a cherry.

큐: 선착순

큐는 무엇인가요?

큐는 대형마트에서의 줄과 같아요 - 첫 번째 사람이 첫 번째로 서비스를 받습니다. 프로그래밍 용어로는 "선입선출" (FIFO) 데이터 구조입니다.

큐를 활용한 예제

간단한 인쇄 큐를 시뮬레이션해 보겠습니다:

Queue<string> printQueue = new Queue<string>();
printQueue.Enqueue("Report.doc");
printQueue.Enqueue("Picture.jpg");
printQueue.Enqueue("Spreadsheet.xlsx");

Console.WriteLine($"Items in queue: {printQueue.Count}");
Console.WriteLine($"Printing: {printQueue.Dequeue()}");
Console.WriteLine($"Next in line: {printQueue.Peek()}");
Console.WriteLine($"Items remaining: {printQueue.Count}");

이 예제에서 우리는:

  1. 문자열 큐를 생성합니다.
  2. 세 개의 항목을 큐에 추가합니다 (Enqueue).
  3. 첫 번째 항목을 제거합니다 (Dequeue).
  4. 다음 항목을 확인합니다 (Peek).

출력:

Items in queue: 3
Printing: Report.doc
Next in line: Picture.jpg
Items remaining: 2

스택: 후입선출

스택은 무엇인가요?

스택은 접시 쌓기와 같아요 - 위쪽에 추가하고 위쪽에서 제거합니다. 그것은 "후입선출" (LIFO) 데이터 구조입니다.

스택을 활용한 예제

텍스트 에디터에서 실행 취소 작업을 추적하는 스택을 사용해 보겠습니다:

Stack<string> undoStack = new Stack<string>();
undoStack.Push("Type 'Hello'");
undoStack.Push("Type ' World'");
undoStack.Push("Delete 'World'");

Console.WriteLine($"Undo operations: {undoStack.Count}");
Console.WriteLine($"Last action: {undoStack.Peek()}");
Console.WriteLine($"Undoing: {undoStack.Pop()}");
Console.WriteLine($"Remaining operations: {undoStack.Count}");

여기서 우리는:

  1. 문자열 스택을 생성합니다.
  2. 세 개의 작업을 스택에 추가합니다 (Push).
  3. 최상단 항목을 확인합니다 (Peek).
  4. 최상단 항목을 제거하고 반환합니다 (Pop).

출력:

Undo operations: 3
Last action: Delete 'World'
Undoing: Delete 'World'
Remaining operations: 2

컬렉션 메서드 표

이 표는 이 컬렉션의 일반 메서드입니다:

메서드 리스트 사전 스택
Add - -
Remove - -
Clear
Contains ✓ (ContainsKey)
Count
Enqueue - - -
Dequeue - - -
Push - - -
Pop - - -
Peek - -

결론

축하합니다! 지금까지 C# 컬렉션의 세계로 첫 걸음을 내딛었습니다. 각 컬렉션 타입은 자신의 장점을 가지고 있으며, 적절한 컬렉션을 선택하면 코드가 더 효율적이고 가독성이 높아집니다.

프로그래밍 여정을 계속하면서 이 컬렉션을 더 많이 사용하는 방법을 발견할 것입니다. 실험을 두려워 말아요 - 그것이 우리가 개발자로 성장하는 방법입니다.

행복하게 코딩하세요, 그리고 컬렉션이 항상 잘 정리되기를 바랍니다!

Credits: Image by storyset