본문 바로가기
Unity/TIL

Unity 컬렉션

by 김차루 2024. 5. 21.
스파르타 내배캠 25일차 TIL
C5조_🥱안하조(사실 해)

 

 

컬렉션

컬렉션(Collection)은 자료를 모아 놓은 데이터 구조를 의미
  • 컬렉션은 배열과 비슷한 자료 구조
  • 배열과는 다르게 크기가 가변적
  • c#에서는 다양한 종류의 컬렉션을 제공
  • 사용하기 위해서는 System.Collections.Generic 네임스페이스를 추가

1) List

  • List : 가변적인 크기를 갖는 배열
  • List를 생성할 때 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);
}

 

2) Dictionary

  • 딕셔너리(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);
}

 

3) Stack

  • 후입선출(LIFO) 구조를 가진 자료 구조
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 (마지막에 추가된 요소)

 

4) Queue

  • 선입선출(FIFO) 구조를 가진 자료 구조
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 (가장 먼저 추가된 요소)

 

5) 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);
}

 

 

배열과 리스트

1) 배열과 리스트

    리스트는 동적으로 크기를 조정할 수 있어 배열과는 다르게 유연한 데이터 구조를 구현할 수 있다. 하지만, 리스트를 무분별하게 사용하는 것은 좋지 않은 습관이다.

 

  1. 메모리 사용량 증가 : 리스트는 동적으로 크기를 조정할 수 있어 배열보다 많은 메모리를 사용한다.
  2. 데이터 접근 시간 증가 : 리스트는 연결 리스트(linked list)로 구현되기 때문에, 인덱스를 이용한 데이터 접근이 배열보다 느리다.
  3. 코드 복잡도 증가 : 리스트를 사용할 때는 데이터 추가, 삭제 등의 작업을 적절히 처리하는 코드를 작성해야 하므로, 코드의 가독성과 유지보수성이 저하될 수 있다.

 

'Unity > TIL' 카테고리의 다른 글

3번째 팀 프로젝트 제출 및 마무리 (게임개발 입문)  (0) 2024.05.23
TIL  (1) 2024.05.22
유니티 Physics Material  (0) 2024.05.17
C# 객체 지향 프로그래밍  (1) 2024.05.16
개인과제 해설  (0) 2024.05.14