C#, 자료구조

[자료구조] - Collection이란?

MuscleDeveloper5683 2024. 4. 3. 20:24
728x90
SMALL

 

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

 

 

 

테스트 코드

 

 

 

 

 

 

 

 

이 외에도 많은 컬렉션 유형이 있으며, 각각의 컬렉션은 다양한 용도와 특성을 갖고있다. 이러한 컬렉션들은 데이터를 효율적으로 저장하고 관리하기 위해 개발되었으며 프로그램의 요구 사항에 맞게 적절한 컬렉션을 선택하여 사용해야 한다!!!.

 

 

 

728x90