자료 관리

컬렉션(C#)

noc777 2024. 9. 22. 20:31

컬렉션이란

 

컬렉션은 자료를 모아 놓은 데이터 구조를 의미합니다.

 

컬렉션을 사용하는 이유

 

C#에서 배열은 크기를 정해두고 있어  배열의 내용을 수정하고 싶을 때 새로운 배열을 만들어

복사를 해야합니다. 컬렉션은 배열과 비슷한 구조를 가지고 있어서 데이터 처리에 있어 배열을

사용하기 불편할 때 사용합니다.

 

C#에서 제공하는 컬렉션을 사용하려면

System.Collections.Generic 네임스페이스를 추가하여야합니다.

 

컬렉션의 종류

 

List

 

리스트와 배열의 차이점은 가변적인 크기를 가지고 있다는 것입니다. 

리스트는 동적으로 크기를 조절할 수 있어 배열보다 유연하지만 단점도 있는데

배열보다 많은 메모리를 사용하여 성능 저하를 유발할 수 있어 무분별한 사용은 지양해야합니다.

따라서 데이터의 크기와 사용목적을 고려하여 적절한 자료구조를 사용하여야합니다.

 

리스트를 생성 

List<자료형> 리스트 이름 = new List<자료형>();   

 

 

리스트의 내용 수정

 

리스트 이름.Add(추가하려는 내용);            ex) list.Add(1);

 

리스트 이름. Remove(삭제하려는 내용);               ex)list.Remove(2);

 

 

 

 

리스트 인덱싱

 

리스트를 인덱싱 하는 형태는 foreach 문을 사용하거나 배열처럼 대괄호를 이용한 형태로도 

인덱싱이가능하다.

 

//foreach 문을 사용한 인덱싱

foreach (int i in list)

{

    Console.WriteLine(i);

 

//배열처럼 대괄호를 통한 인덱싱

for (int i = 0 ; i<list.Count; i++)        //list는 length를 쓰는 것이 아닌 Count를 써서 list의 크기를 나타낼수 있다.

{

   Console.WriteLine(list[i]);

}

 

 

Dictionary 

 

딕셔너리는 키와 값으로 구성된 데이터를 저장합니다.

중복된 이름의 키를 가질 수 없고 키와 값을 한 쌍으로 묶어 저장합니다.

 

딕셔너리를 생성할 때

 

Dictionary<키 자료형,값 자료형> 딕셔너리 이름 = new Dictionary<키 자료형,값 자료형>();

ex) Dictionary<string,int> score = new Dictionary<string,int>();

 

딕셔너리에 데이터를 수정할 때

 

 

딕셔너리에 데이터를 추가할 때:

 

딕셔너리 이름.Add(키 이름,값 내용);     

ex)score.Add("key name",100);

 

딕셔너리에 데이터를 삭제할 때:

 

딕셔너리 이름.Remove(키 이름)

ex)score.Remove("key name");

 

인덱싱을 할 때 foreach 를 사용합니다.

 

foreach(KeyValuePair <키 자료형,값 자료형> pair in 딕셔너리 이름)

{

    Console.WriteLine(pair.key +""+pair.Value);

}

 

ex)

foreach(KeyValuePair <string,int> pair in score)

{

    Console.WriteLine(pair.key +""+pair.Value);

}

 

 

 

Stack

 

스택은 후입선출(LIFO) 구조를 띄고있습니다.

즉 가장 마지막에 들어온 데이터를 내보낼 수 있습니다.

 

스택을 선언할 때

Stack<자료형> 스택이름 = new Stack<자료형>(); 

스택에 내용 추가
스택 이름.Push(값);


스택에서 내용 가져오기

Name_Stack.Push(1);

Name_Stack.Push(2);

Name_Stack.Push(3);

 

int value = Name_Stack.Pop(); 

 

스택에서 내용을 가져올 때 가장 마지막에 들어온 데이터를 먼저 내보내므로 위의 코드에서 추출되는

데이터는 3입니다.

 

Queue

 

큐큐는 선입선출(FIFO) 구조를 가지고 있습니다.

스택과 다르게 맨 먼저 들어온 데이터를 먼저 내보냅니다.

 

 

큐를 선언할 때

Queue<자료형> 큐 이름 = new Queue<자료형>(); 

Queue에 내용을 추가할 때
큐 이름.Enqueue();

Queue에서 내용 가져오기

Name_Queue .Enqueue(1);

Name_Queue .Enqueue(2);

Name_Queue .Enqueue(3);

 

int value = Name_Queue.Dequeue(); 

 

위에선 가장 먼저 들어온 데이터가 1이므로 1을 값을 먼저 내보냅니다.

 

 

HashSet

 

해쉬셋은 리스트와 유사하지만 중복되지않은 데이터로 이루어져 있습니다.

 

해쉬셋 선언

HashSet<자료형> 해쉬셋 이름 = new HashSet<자료형>(); 

해쉬셋에 내용 추가
해쉬셋.Add(값);

해쉬셋에서 내용 가져오기


foreach (자료형 element in 해쉬셋 이름)
{
    Console.WriteLine(element);
}

 

 

'자료 관리' 카테고리의 다른 글

객체와 클래스  (0) 2024.09.27
C# 클래스 상속  (0) 2024.09.27
리스트 구조  (0) 2024.09.25
클래스를 사용하여 리스트에 여러 개의 변수를 넣는 방법  (0) 2024.09.25
배열  (2) 2024.09.22