C#,JAVA 에서는 Collection 이라는 용어 사용, C++ 에서는 Container 이라는 용어를 사용한다.
1. Collection 이란?
C#에서 Collection은 데이터를 저장하고 조작하기 위한 여러 유형의 데이터 구조를 말한다.
컬렉션(Collection)은 C#에서 지원하는 자료구조 클래스이다.
컬렉션의 종류는 [ArrayList, Queue, Stack, Hashtable] 등이 있다.
2. General Collection 이란?
컬렉션의 성능 문제 때문에 대신 사용하는 것이 제네릭 컬렉션이다.
제네릭 컬렉션은 [List<T>, Dictionary<T> , Queue<T>, Stack<T>] 등의 클래스가 있다.
🔔주의 사항🔔
Generic을 사용하기 위해선 항상 Generic 네임스페를 추가해주자!!
using System.Collections.Generic;
1. 리스트(List): 리스트는 순서가 있는 데이터를 저장하는데 사용된다. C#에서는 List<T> 클래스를 사용하여 제네릭 리스트를 만들 수 있다. T는 리스트에 저장될 데이터의 유형을 나타낸다.
- 데이터를 순차적으로 저장하고 순서가 중요한 경우 사용된다.
- 데이터에 대한 빠른 읽기 및 쓰기가 필요한 경우 적합하다.
- 인덱스를 통한 빠른 접근이 요구되는 경우 유용하다.
List 메서드에 관한 것 -> https://sintyoung5683.tistory.com/33
테스트 코드
결과
2. 딕셔너리(Dictionary): 딕셔너리는 키-값 쌍을 저장하는데 사용된다. C#에서는 Dictionary<TKey, TValue> 클래스를 사용하여
제네릭 딕셔너리를 만들 수 있다. TKey는 키의 유형을 나타내고, TValue는 값의 유형을 나타낸다.
- 키-값 쌍을 저장하고 키를 사용하여 값을 검색할 때 사용된다.
- 검색 속도가 빠른 해시 맵 구조를 활용하여 빠른 조회가 가능하다.
- 고유한 키와 연관된 값이 필요한 경우 적합하다.
Dictionary 메서드에 관한 것 -> https://sintyoung5683.tistory.com/33
테스트 코드
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
3. 큐(Queue): 큐는 선입선출(FIFO) 방식으로 데이터를 저장하는데 사용된다. C#에서는 Queue 클래스를 사용하여 제네릭 큐를 만들 수 있습니다.
- 데이터를 FIFO(First-In-First-Out) 순서로 처리해야 할 때 사용된다.
- 작업 큐, 이벤트 처리, 메시지 큐 등의 시나리오에 유용하다.
- 요청이나 이벤트를 순차적으로 처리해야 하는 경우 적합하다.
Queue 메서드에 관한 것 -> https://sintyoung5683.tistory.com/33
테스트 코드
![]() |
![]() |
![]() |
![]() |
4. 스택(Stack): 스택은 후입선출(LIFO) 방식으로 데이터를 저장하는데 사용된다. C#에서는 Stack<T> 클래스를 사용하여 제네릭 스택을 만들 수 있다.
- 데이터를 LIFO(Last-In-First-Out) 순서로 처리해야 할 때 사용된다.
- 함수 호출 스택, 역순 연산 등에 유용하다.
- 재귀 알고리즘 등에서 임시 데이터를 저장하는 용도로 적합하다.
Stack 메서드에 관한 것 -> https://sintyoung5683.tistory.com/33
테스트 코드
![]() |
![]() |
![]() |
![]() |
이 외에도 많은 컬렉션 유형이 있으며, 각각의 컬렉션은 다양한 용도와 특성을 갖고있다. 이러한 컬렉션들은 데이터를 효율적으로 저장하고 관리하기 위해 개발되었으며 프로그램의 요구 사항에 맞게 적절한 컬렉션을 선택하여 사용해야 한다!!!.
'C#, 자료구조' 카테고리의 다른 글
[자료구조] - Tuple (0) | 2024.04.12 |
---|---|
Generic Collectin 메서드 (0) | 2024.04.05 |
[자료구조] - 자료구조란 무엇일까? (2) | 2024.03.26 |
[자료구조] - Enum이란? (2) | 2024.03.05 |
[자료구조] - C# 다형성(polymorphism) - override와 virtual (2) | 2024.02.28 |