나 개발자 진짜 되냐?

[ C# 기본 문법 11 ] 컬렉션 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 11 ] 컬렉션

Snow Rabbit 2024. 9. 22. 00:13

 

전 시간에 배열을 공부했다.

 

근데 컬렉션이 뭘까?

싶어서 준비했다.

 

컬렉션에 대해 공부해 보자.

 


🌟 컬렉션 🌟

자료를 모아 놓은 데이터의 구조

자료구조!!!

 

배열이랑은 다른 게 뭘까?

 

바로 가변적이라는 것..!

정해져 있는 크기가 아니다.

 

이 친구를 사용하기 위해서는 

맨 위에

System.Collections.Generic

라는 네임스페이스를 추가해주어야 한다.

 

컬렉션은 자료 구조기 때문에

종류가 있다.

 

함께 하나씩 알아보자!!

 


✨ List ✨

가변적인 크기를 갖는 친구

(배열 아님!)

 

리스트 특징은

생성할 때, 리스트에 담을 자료형을 지정해줘야 한다.

 

List<int> numbers = new List<int>(); // 빈 리스트 생성
numbers.Add(1); // 리스트에 데이터 추가
numbers.Add(2);
numbers.Add(3);
numbers.Remove(2); // 리스트에서 데이터 삭제

foreach(int number in numbers) // 리스트 데이터 출력
{
    Console.WriteLine(number);
}

 

add를 통해 하나씩 집어넣어준다.

 

 

생성 시 이렇게 나오고

2를 지우니 이렇게 1,3 만 남게 된다.

 

당연한 거 같지만

자료구조는 이렇게 눈으로 봐야 쉽게 이해가 되더라!

 

밑에 보면

for문의 친구 

foreach문이 나온다.

 

foreach(int number in numbers)

이 친구는 자료구조, 배열에 함께 쓰는 친구이다.

 

foreach 문에서도 봤지만

여기서는 length를 쓰지 않는다.

나열되어 있어 보이지만 연결된 친구들이 아니기 때문!

 

그래서 얘네 하나하나를 count로 부른다!

 

numbers의 값을 꺼내서 number에 넣겠다는 의미다!

 

for문으로도 쓸 수 있다.

for ( int i = 0; i <list.count; i++ )

 

또한 list [i]를 쓰며 인덱싱도 가능하다!

 

 

✨ Dictionary ✨

이 친구는 키와 값으로 구성되어 있다.

그래서 키를 가져오면 그에 맞는 값을 출력해 준다.

 

키는 중복될 수 없겠죠!!

키와 값은 무조건 쌍!

마치 내 집 그리고 내 집열쇠!라고 생각해 주면 편하다.

 

using System.Collections.Generic;

Dictionary<string, int> scores = new Dictionary<string, int>(); // 빈 딕셔너리 생성
scores.Add("Alice", 100); // 딕셔너리에 데이터 추가
scores.Add("Bob", 80);
scores.Add("Charlie", 90);
scores.Remove("Bob"); // 딕셔너리에서 데이터 삭제

foreach(KeyValuePair<string, int> pair in scores) // 딕셔너리 데이터 출력
{
    Console.WriteLine(pair.Key + ": " + pair.Value);
}

 

예시문이다.

using System.Collections.Generic;

 

잊지 말고 꼭 써주자.

 

Dictionary <string, int> scores = new Dictionary <string, int>();

 

생성은 < > 꺾새를 활용해서

키값은 string

값은 int로 받아준 모습이다.

 

 

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

 

여기서도 foreach를 사용해서 반복을 돌리고

KeyValuePair를 통해

우리는 키값과 페어인 이라는 함수를 써주고,

 

아까 리스트와 같은 방법으로 해석하면

 

scores 안에 있는 값을 변수 pair에게 넣고

돌리겠다는 의미!

 

 

✨ Stack ✨

 스택은 후입선출( LIFO ) 구조를 가진 자료구조로

 

나중에 들어온 애가 먼저 나간다 라는 의미이다.

 

 

들어올 땐 push를 사용해서 위에 쌓고

내보낼 땐 pop을 통해서 맨 위에 여기서는 4th가 나가게 된다.

 

Stack<int> stack1 = new Stack<int>();  // int형 Stack 선언

// Stack에 요소 추가
stack1.Push(1);
stack1.Push(2);
stack1.Push(3);

// Stack에서 요소 가져오기
int value = stack1.Pop(); // value = 3 (마지막에 추가된 요소)

 

 

✨ Queue✨

 

큐! 는 스택이랑 다른 친구이다.

먼저 들어온 애가 먼저 나간다 라는 의미로

 

 

1st가 제일 먼저 들어왔으니

제일 먼저 나가게 되는 것이다.

 

Enqueue로 넣고

뺄 땐 Dequeue를 써준다.

 

Queue<int> queue1 = new Queue<int>(); // int형 Queue 선언

// Queue에 요소 추가
queue1.Enqueue(1);
queue1.Enqueue(2);
queue1.Enqueue(3);

// Queue에서 요소 가져오기
int value = queue1.Dequeue(); // value = 1 (가장 먼저 추가된 요소)

그 이외에 스택이랑 선언하는 방식은 동일하다!

 

 

✨ HashSet✨

 

해쉬는 집합이라는 느낌이라고 생각해 주면 좋다.

 

HashSet<int> set1 = new HashSet<int>();  // int형 HashSet 선언

// HashSet에 요소 추가
set1.Add(1);
set1.Add(2);
set1.Add(3);

// HashSet에서 요소 가져오기
foreach (int element in set1)
{
    Console.WriteLine(element);
}

add를 이용해서 추가할 수 있다.

 


지금까지 컬렉션이라는 친구들을 공부해 보았다.

 

리스트

딕셔너리

스택

해쉬

 

이 친구들을 꼭 머리에 넣어서

나중에 알고리즘 짤 때 도움이 되었으면 좋겠다..ㅎㅎ

 

이만 끝!