프로그래밍/C#

C# 컬렉션(Collection_List, Dictionary, Stack, Queue, ArrayList)

gameObject 2023. 6. 15. 02:43
728x90

Cpp에서는 컨테이너라고 불리우는 Csharp의 컬렉션에 대해 알아보자

컬렉션(Collection)

변수를 여러개 모아 편하게 쓰기 위해서 만들어놓은 자료구조이다.

 

1. List (C#) / Vector (C++)

- 가변배열

- 선형구조이다. 차곡차곡 쌓이기 때문에 인덱스를 통해 값을 가져올 수 있다.

- 내부적으로 배열로 구현되어있으나 저장할 데이터 개수에 따라서 크기가 자동으로 변한다.

List<int> listName = new List<int>(); // 리스트 선언
listName.Add(0); // listName에 0을 추가
listName.RemoveAt(1); // 2번째(0,1~순서이므로) 인덱스 값을 삭제
listName.insert(1,3); // 2번째 인덱스에 3을 삽입

 

2. Set

- 수학에서 말하는 집합을 의미하는 자료구조

- 중복된 값을 저장하지 않는다.

 

3. Dictionary(C#) / Map(C++)

- 키, 값 순서쌍으로 된 데이터를 저장하는 자료구조이다.

- Hash table, Set으로 이루어져있다. (Hash table = key값과 Value값으로 되어있음, Set = key값이 중복될수 없다는 점)

- 값은 중복될 수 있으나 key는 중복되면 안된다.

- 다만 비선형구조라서 List와같이 인덱스번호로는 찾을수 없고, Key값으로 찾아야한다.

// Dictionary 선언
Dictionary<string,int> dictionaryName = new Dictionary<string,int>();
// dictionary에 추가하는 법
dictionaryName["첫번째"] = 1;
dictionaryName["두번째"] = 2;
dictionaryName["세번째"] = 3;

// 값을 쓰고싶을때도 키값을 입력해주면 된다.
Console.WriteLine(dictionaryName["첫번째"]);
// 값은 1이 출력된다.

 

4. Queue

- 가장 처음에 삽입한 데이터를 가장 먼저 내보낸다.

// 큐의 선언
Queue queName = new Queue();
// ()안의 값을 밀어넣는다.
queName.Enqueue(1);
queName.Enqueue(2);
queName.Enqueue(3);
// 값을 꺼내는 법
que.Dequeue(); 
que.Dequeue(); 
que.Dequeue(); 

// 1이 가장 먼저 출력된다.
// 그다음 2, 3

 

5. Stack

- 가장 마지막에 삽입한 데이터를 가장 먼저 내보낸다.

//스택의 선언
Stack stackName = new Stack();
// 스택에 값을 넣는법
stackName.Push(1);
stackName.Push(2);
stackName.Push(3);
//값을 꺼내는 법
stackName.Pop();
stackName.Pop();
stackName.Pop();

//3이 가장 먼저 출력된다.
// 2, 1 이 그 다음 순서

 

6. ArrayList

- Cpp에는 없고 C#에는 있다.

- 다양한 데이터타입을 한 배열에 넣고 사용을 할 수가 있다.

- 다양한 데이터타입을 한 배열에 넣고 사용을 하기때문에 잘 사용하지 않는다.

- ArrayList를 일반화한 구조가 List이다.

 

7. Hash Table

- 키값과 벨류값으로 이루어져있다.

- Hash Table을 일반화한 구조가 Dictionary이다.

 

 

728x90