C# 컬렉션: 초보자 가이드
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C# 컬렉션의 세계에 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라고 걱정하지 마세요 - 저는 친절한 가이드로서, 모든 것을 단계별로 설명해 드릴 것입니다. 시작해 보겠습니다!
컬렉션은 무엇인가요?
상상해 보세요, 파티를 준비하고 모든 손님을 기록해야 할 때. 각 이름을 별도의 종이에 쓰는 것은 지저분하고 비효율적입니다. 대신, 손님 명단을 사용할 것입니다. C#에서 컬렉션은 그 손님 명단과 같아요 - 우리가 관련된 객체 그룹을 정리하고 관리하는 데 도움을 줍니다.
컬렉션을 사용하는 이유는 무엇인가요?
컬렉션은 매우 유용합니다. 그 이유는 다음과 같습니다:
- 단일 변수에 여러 항목을 저장할 수 있습니다.
- 항목을 쉽게 추가하거나 제거할 수 있습니다.
- 데이터를 검색하고 정렬할 수 있습니다.
- 데이터 그룹에 작업을 수행할 수 있습니다.
이제 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]}.");
이 예제에서 우리는:
- 새로운 문자열 리스트를 생성합니다.
- 세 개의 과일을 리스트에 추가합니다.
-
Count
프로퍼티를 사용하여 과일의 수를 출력합니다. - 인덱스를 사용하여 두 번째 과일에 접근합니다 (인덱스는 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.");
}
여기서 우리는:
- 문자열 키와 문자열 값으로 구성된 사전을 생성합니다.
- 세 개의 과일-색상 쌍을 추가합니다.
- 과일 키를 사용하여 색상에 접근합니다.
- 키가 존재하는지 확인한 후 값을 접근합니다.
출력:
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}");
이 예제에서 우리는:
- 문자열 큐를 생성합니다.
- 세 개의 항목을 큐에 추가합니다 (Enqueue).
- 첫 번째 항목을 제거합니다 (Dequeue).
- 다음 항목을 확인합니다 (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}");
여기서 우리는:
- 문자열 스택을 생성합니다.
- 세 개의 작업을 스택에 추가합니다 (Push).
- 최상단 항목을 확인합니다 (Peek).
- 최상단 항목을 제거하고 반환합니다 (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