✅ 컬렉션이란?
컬렉션(Collection)은 자료를 모아 놓은 데이터 구조이다.
단순히 값을 저장뿐 아니라 추가, 삭제, 검색 등의 작업을 수행할 수 있도록 다양한 메서드와 속성을 제공한다.
컬렉션의 특징
- 배열과 비슷한 자료 구조
- 크기가 가변적
- C#에서는 다양한 종류의 컬렉션을 제공
- 사용하기 위해서는 System.Collections.Generic 네임스페이스 추가
✅ 주요 컬렉션
1. List
List의 특징
- 제네릭 클래스로, 특정 타입을 지정해 타입 안정성을 보장
- 타입이 명확하므로 값을 가져올 때 형변환이 필요가 없다
- 배열처럼 인덱스를 이용해 값을 가져올 수 있지만, 크기가 자동으로 늘어나는 구조로 배열보다 유연하다.
List 사용예시
List<string> animals = new List<string>();
animals.Add("개");
animals.Add("고양이");
animals.Add("돼지");
animals.Remove("돼지");
foreach(string animal in animals)
{
Console.WriteLine(animal);
}
주요 메서드 및 속성
| 메서드 / 속성 | 설명 |
|---|
| Add(item) | 요소 추가 |
| Insert(index, item) | 원하는 인덱스에 삽입 |
| Remove(item) | 특정 값 제거 |
| RemoveAt(index) | 특정 인덱스 값 제거 |
| Contains(item) | 포함 여부 확인(true / false) |
| Count | 요소 개수 |
| Clear() | 전체 제거 |
| IndexOf(item) | 특정 값 인덱스 반환 |
2. Dictionary
Dictionary의 특징
- 키값과 밸류값을 쌍으로 갖는 컬렉션
- 인덱스로 접근하는 게 아니라, 고유한 키로 접근
- 중복된 키를 가질 수 없다
- 키를 통해 값을 빠르게 찾을 수 있다
Dictionary 사용예시
Dictionary<string, int> age = new Dictionary<string, int>();
age.Add("철수", 25);
age.Add("영희", 22);
age.Add("영수", 23);
Console.WriteLine(age["철수"]);
if(age.ContainsKey("영희"))
{
Console.WriteLine("영희의 나이는 " + age["영희"]);
}
age["영수"] = 24;
foreach(KeyValuePair<string, int> pair in age)
{
Console.WriteLine($"{pair.Key} : {pair.Value}");
}
주요 메서드 및 속성
| 메서드 / 속성 | 설명 |
|---|
| Add(key, value) | 키,값 추가 |
| Remove(key) | 특정 키 삭제 |
| ContainsKey(key) | 키 존재 여부 확인 |
| ContainsValue(value) | 값 존재 여부 확인 |
| Count | 요소 개수 반환 |
| Clear() | 모든 요소 삭제 |
| Keys | 모든 키 조회 |
| Values | 모든 값 조회 |
3. Stack
Stack의 특징
- 후입선출(Last-In-First-Out, LIFO) 방식의 자료 구조
- 메서드 이름이 직관적(Push, Pop, Peek)
Stack 사용예시
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
int value = stack.Pop();
주요 메서드 및 속성
| 메서드 / 속성 | 설명 |
|---|
| Push(item) | 스택에 값 추가 |
| Pop() | 스택에서 값 꺼내고 제거 |
| Peek() | 가장 위의 값 확인 (제거X) |
| Count | 요소 개수 |
| Clear() | 모든 요소 삭제 |
| Contains(item) | 특정 값 포함 여부 확인 |
4. Queue
Queue의 특징
- 선입(First-In-First-Out, FIFO) 방식의 자료 구조
- 줄 서기, 순번 처리 등에 적합
Queue 사용예시
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
int value = queue.Dequeue();
주요 메서드 및 속성
| 메서드 / 속성 | 설명 |
|---|
| Enqueue(item) | 큐에 값 추가 |
| Dequeue() | 큐에서 값 꺼내고 제거 |
| Peek() | 맨 앞의 값 확인 (제거X) |
| Count | 요소 개수 |
| Clear() | 모든 요소 삭제 |
| Contains(item) | 특정 값 포함 여부 확인 |
5. HashSet
HashSet의 특징
- 중복을 허용하지 않는다
- 데이터의 순서를 보장하지 않는다
HashSet 사용예시
HashSet<int> set = new HashSet<int>();
set.Add(1);
set.Add(2);
set.Add(1);
foreach(int element in set)
{
Console.WriteLine(element);
}
주요 메서드 및 속성
| 메서드 / 속성 | 설명 |
|---|
| Add(item) | 값 추가 |
| Remove(item) | 특정 값 제거 |
| Count | 요소 개수 |
| Clear() | 모든 요소 삭제 |
| Contains(item) | 특정 값 포함 여부 확인 |