[유니티 / C#] Dictionary (딕셔너리)

⭐ 딕셔너리

자료구조의 종류 중 하나로

키(Key)와 값(Value)의 구조로 이루어진 자료구조입니다.

 

딕셔너리를 직역하면 사전을 의미합니다.

사전을 이용해 원하는 정보를 찾을 때, 사전의 앞에 있는 목차를 통해 원하는 정보가 어디있는지 확인한 후

해당 페이지로 이동하게 됩니다.

 

자료구조인 딕셔너리 역시 사전과 비슷한 구조로

키(Key)를 통해 해당 값(Value)을 조회하는 방식으로 이루어져 있습니다.

따라서 키는 중복이 없는 유일성을 가지고 있어야합니다.

 

 

 

딕셔너리 사용하기


💡 딕셔너리 선언

//딕셔너리 객체 생성
Dictionary<int, string> itemData = new Dictionary<int, string>();

//딕셔너리 객체 생성과 동시에 초기화
Dictionary<int, string> itemData = new Dictionary<int, string>
{
    {1, "회복 포션" },
    {2, "검" },
    {3, "방패" }
};

itemData[1] = "성스러운 부적"; -> 1번 키의 value를 "성스러운 부적"으로 변경
Debug.Log(itemData[1]);        -> 1번 키의 value를 출력

● Dictionary<key type, value type> 변수명 = new Dictionary< key type, value type >(); 으로 선언

    ○ 다른 자료구조와 마찬가지로 선언과 동시에 초기화 할 수 있습니다.

 

● 딕셔너리의 키를 통해 데이터에 접근할 수 있습니다.

    ○ 동일한 방식으로 값을 직접 수정할 수도 있습니다.

 

💡 Add(key, value) - 데이터 추가

itemData.Add(4, "대거");
itemData.Add(5, "부식폭탄");

● Add() 메서드를 통해 데이터를 직접 추가할 수 있습니다.

 

 

💡 Remove(key) - 데이터 삭제

itemData.Remove(1); -> 1번 키의 데이터 삭제

● Remove() 메서드를 통해 데이터를 삭제할 수 있습니다.

    ○ key를 통해 접근 가능

 

 

 

💡 ContainsKey(key) - 키 존재 여부 확인

itemData.ContainsKey(1); -> 1이라는 키가 있으면 True, 없으면 False 반환

● ContainsKey() 메서드를 통해 딕셔너리 객체에 해당 키가 있는지 확인할 수 있습니다.

 

 

 

💡 TryGetValue(key, out value) - 키가 있으면 해당 값 반환, 없으면 False

itemData.TryGetValue(1, out var a) -> 1번 키가 있으면 해당 값을 a에 반환, 없으면 False(a는 null)

● TryGetValue() 메서드를 통해 해당 키가 있으면 값을 반환하고 없으면 False를 반환할 수 있습니다.

    ○ 딕셔너리에서 키를 통해 값을 받아올 때 더 안전하게 체크할 수 있습니다.

 

 

 

💡 Keys() / Values - 모든 키 / 값 반환

foreach(var item in itemData.Keys) -> itemData의 모든 키 반환
{
    Debug.Log(item);
}

foreach(var item in itemData.Values) -> itemData의 모든 값 반환
{
    Debug.Log(item);
}

● 딕셔너리의 모든 키 / 값을 반복하는 작업을 수행할 때 주로 사용합니다.

    ○ Keys() 프로퍼티를 통해 딕셔너리의 모든 키에 접근할 수 있습니다.

    ○ Values() 프로퍼티를 통해 딕셔너리의 모든 값에 접근할 수 있습니다.

 

 

 

💡 Clear() - 모든 키 - 값 삭제

itemData.Clear(); -> itemData의 모든 데이터(키-값) 삭제

● Clear() 메서드를 이용해 딕셔너리의 모든 데이터를 삭제할 수 있습니다.

 

 

 

💡 Count - 키-값 쌍의 수를 가져오기

Debug.Log(itemData.Count); -> itemData의 모든 키-값 쌍의 수를 출력

● Count 프로퍼티를 이용해 해당 딕셔너리의 요소의 개수를 확인할 수 있습니다.

 

 

 

💡 Equals - 지정된 개체와 현재 개체가 같은지 여부 확인

Debug.Log(itemData[1].Equals("회복 포션")); -> itemData의 1번 키의 값이 "회복 포션"이면 True, 아니면 False

● Equals() 메서드를 통해 해당 키의 값이 인자값과 동일한지 여부를 받아올 수 있습니다.

 

 

📘 참고자료

https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.dictionary-2?view=net-8.0