딕셔너리, Dictionary
Dictionary<TKey, KValue> 자료구조는 System.Collections.Generic의 네임스페이스 제네릭 클래스이며 키-값 쌍의 데이터를 저장하고 관리하는 데 사용되며 키를 사용하여 값을 효율적으로 검색할 수 있다.
- 주로 아이템 관리 등에 사용하나 다른곳에서도 많이 사용됨.
- 잦은 검색에 최적화된 대신 단순 데이터 저장용으로 사용하기엔 적합하지 않을 수 있음
딕셔너리 선언
//종류 혹은 이름, 값
Dictionary<string, int> "딕셔너리명" = new Dictionary<string, int>();
주요 특징 및 기능
- 해시테이블(HashTable) 기반의 자료구조라 Key를 사용하여 Value를 효율적으로 검색, 추가, 삭제할 수 있다.
- 해시테이블 : 비제네릭이라 자료형을 명시하지 않아 박싱/언박싱이 필요하다 - 키와 값의 쌍을 저장한다. 각 키는 고유하며 중복될 수 없다.
- 값은 중복될 수 있지만, 각 키는 고유하며 중복될 수 없고 유일해야 한다.
메서드 및 프로퍼티
- Add(TKey key, TValue value) : 새로운 키-값 쌍을 추가
- Remove(TKey key) : 특정 키를 제거
- ContainsKey(Tkey, key) : 특정 키가 존재하는지 여부만을 확인, 값이 필요할 경우 추가적인 연산 필요
- 중복값을 확인할때 자주 씀 - TryGetValue(TKey, key, out TValue value) : 키를 이용하여 값을 검색하며, 성공 여부를 반환
- Count : 딕셔너리 내의 키-값 쌍의 개수를 반환
- Keys : 모든 키를 가져오는 프로퍼티
- Values : 모든 값을 가져오는 프로퍼티
- Clear() : 모든 키-값 쌍을 제거
// 일부 예시
// 딕셔너리 선언
Dictionary<string, int> npcHP = new Dictionary<string, int>();
npcHP.add("가가", 10);
npcHP.add("나나", 20);
npcHP.Remove("가가");
// 존재여부 확인, 존재하지 않는 키에 접근하여 발생하는 예외상황 예방가능
if(!"딕셔너리명.ContainsKey("요소명"))
{
return 등
}
딕셔너리 접근 및 순회
// 접근 : 특정키를 이용하여 값을 읽을 수 있다.
var "요소명" = "딕셔너리명["요소명"];
// 순회 : 반복문 중 foreach문을 이용하여 딕셔너리의 모든 키-값에 접근 가능
foreach(var "요소명" in "딕셔너리명)
{
Debug.Log 등으로 확인
}
딕셔너리 정렬
딕셔너리는 기본적으로 정렬 기능을 지원하지 않는다.
// 오름차순 정렬
dic = dic.OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value);
// 내림차순 정렬
dic = dic.OrderByDescending(x => x.Key).ToDictionary(x => x.Key, x => x.Value);
'C# > Theory' 카테고리의 다른 글
[C#] 메서드, 매개변수, 반환(return), void (0) | 2025.02.19 |
---|---|
[C#] 조건문 - 홀/짝수 구분, 등급 출력 등 (0) | 2025.02.10 |
[C#] 문자열 처리 기능 (0) | 2025.02.06 |
[C#] 기초, Using / Console 등 (0) | 2025.02.05 |
[C#] 연산/연산자 (0) | 2025.02.05 |