프로그래밍에 있어서 자료를 효율적으로 관리하는 것은 중요한 일입니다. 이를 위해 사용하는 것이 바로 자료구조입니다.
컬렉션(Collection)은 C#에서 지원하는 자료구조 클래스입니다.
컬렉션은 object 형식을 사용하여 데이터를 관리합니다. 그래서 앞선 포스팅에서 설명드렸던 박싱과 언박싱이 발생하게 됩니다. 따라서 컬렉션을 많이 사용하게 되면 프로그램의 성능 저하를 유발합니다.
결과적으로 현재 C#에서는 컬렉션은 잘 사용하지 않습니다.
그래서 사용하는 것이 바로 제네릭 컬렉션입니다.
제네릭(Generic)의 의미는 일반화라고 생각하면 이해하기 쉬울 것 같습니다.
컬렉션을 사용할 때 데이터의 형식을 통일(일반화)하여 기존 컬렉션의 성능 문제를 줄일 수 있는 것이 바로 제네릭 컬렉션입니다.
제네릭 컬렉션에는 List<T>, Dictionary<T>, Queue<T>, Stack<T> 등의 클래스가 있습니다.
여담이지만 저는 Key, Value 쌍으로 데이터를 관리하는 Dictionary<T> 클래스를 가장 자주 사용합니다. 특정 ID를 통해 데이터를 관리하는 게 정말 편리하더라구요 :)
제네릭 컬렉션은 System.Collections.Generic을 using 지시문으로 선언해주어야 합니다. Unity에서 C# 스크립트를 새로 만들면 자동적으로 선언되어 있습니다.
using System.Collections.Generic;
List<T> 클래스는 배열 크기를 미리 선언할 필요가 없는 가변배열입니다.
다음은 List<T> 클래스의 생성자, 속성, 메서드입니다.
// List<T> 생성자
List<string> items = new List<string>();
// Add(T) Method : List<T> 끝에 오브젝트를 추가합니다.
items.Add("Wood");
items.Add("Stone");
items.Add("Stick");
items.Add("Sword");
// items = {"Wood", "Stone", "Stick", "Sword"}
// Count 속성 : 요소의 개수
Console.WriteLine(items.Count); // 4
// Item[Int32] 속성
Console.WriteLine(items[2]); // Stick
// Remove(T) 메서드 : 처음으로 나오는 특정 오브젝트를 삭제합니다.
items.Remove("Stick");
Console.WriteLine(items.Count); // 3
// Clear() 메서드 : 모든 요소를 삭제합니다.
items.Clear();
생성자, 속성, 메서드에 관련된 추가 정보들은 마이크로소프트 공식 문서를 참고하시면 좋을 거 같습니다.
Dictionary<T> 클래스는 Key, Value 쌍으로 데이터를 관리하는 자료구조 클래스입니다. Key는 유일해야 하고 Key를 통해 Value에 접근할 수 있습니다.
다음은 Dictionary<T> 클래스의 생성자, 속성, 메서드입니다.
// Dictionary<T> 생성자
Dictionary<int, string> items = new Dictionary<int, string>();
// Add() 메서드 : Key, Value 쌍을 추가합니다.
items.Add(1, "Wood");
items.Add(2, "Stone");
items.Add(3, "Stick");
items.Add(4, "Sword");
// items = {1: "Wood", 2: "Stone", 3: "Stick", 4: "Sword"}
// Count 생성자 : Key, Value 쌍의 개수
Console.WriteLine(items.Count); // 4
// Item[TKey] 속성
Console.WriteLine(items[2]); // Stone
// Remove(TKey) 메서드 : 특정 Key를 삭제합니다. Key, Value 쌍이 삭제됩니다.
items.Remove(1);
// ContainsKey(TKey) 메서드 : 특정 Key가 있는지 확인합니다.
if (!items.ContainsKey(1))
{
Console.WriteLine("Key 1 is not found");
}
// Clear() 메서드 : 모든 Key, Value 쌍을 삭제합니다.
items.Clear();
마찬가지로 추가적인 정보들은 마이크로소프트 공식 문서를 참고하시면 되겠습니다.
Stack<T>과 Queue<T>도 자주 사용하는데 이 자료구조가 이런 자료구조다라고 설명하는 포스팅이 아니기 때문에 설명은 생략하도록 하겠습니다.
생성자, 속성, 메서드는 마이크로소프트 공식 문서를 참고하시면서 사용해보면 좋을 거 같습니다.
글 잘 봤습니다.