Dictionary<TKey, TValue>

2025. 11. 14. 18:55·⭐C Sharp/15-1. 제네릭

Dictionary<TKey, TValue>

Dictionary<TKey, TValue>는 C# 에서 가장 많이 쓰는 저장소 자료구조 ( Data Structure )이다.

자료구조 중에서 데이터를 Key 와 Value 의 쌍으로 저장하는 해시 테이블을 기반으로 하는 제네릭 컬렉션이다.

배열이나 리스트처럼 순서로 접근하는 방식이 아니라 고유한 키 ( Key )를 통해 값 ( Value )을 빠르게 조회할 수 있다.

상황 Dictionary 적합 이유
특정 값을 이름 또는 ID 로 빠르게 찾기 적합하다 O(1) 시간에 바로 접근 가능
키가 중복되면 안되는 경우 적합하다 딱 한 키에 한 값만 저장된다
순서가 중요할 때 적합하지 않다 삽입 순서를 보장하지 않는다

→ 배열처럼 인덱스로 찾는 게 아니라 , 키로 직접 접근하는 방식이다.

→ 키는 중복될 수 없고 , 값을 빠르게 찾거나 수정할 수 있다.

 

예시 :

  • 몬스터의 ID → 체력
  • 아이템 이름 → 아이템 정보
  • 문자열 ("Player") → Player 객체

 

선언과 초기화

Dictionary<string, int> dict = new Dictionary<string, int>();
  • Tkey → 키 타입 ( string , int , enum 등 )
  • TValue → 값 타입 ( int , float , class 등 )

 

 

▼ 초기값을 설정할 수도 있다

Dictionary<string, int> dict = new Dictionary<string, int>()
{
    { "A", 100 },
    { "B", 95 },
    { "C", 60 }
};

 

 

▼ 요소 추가

dict.Add("D", 97); // Add 메서드로 추가한다

dict["E"] = 100;    // 인덱서를 사용한 새 키를 추가한다
dict["A"] = 45;   // 기존 키의 값을 수정한다

 

  • 주의 : 동일한 키가 이미 존재하면 예외가 발생하므로 , AddTry( )를 사용할 수도 있다.
bool isAdded = dict.TryAdd("A", 80);
if (isAdded)
{
    Console.WriteLine("성공적으로 추가");
}
else
{
    Console.WriteLine("이미 해당 키가 존재");
}

 

 

▼ 값 조회하기

int hochanScore = dict["A"];
  • 키가 존재하지 않을 경우 KeyNotFoundException 발생
  • 안전하게 조회하려면 TryGetValue 를 사용
int value;
bool isfound = dict.TryGetValue("B", out value);

if (isfound)
{
    Console.WriteLine(value);
}

 

 

▼ 요소 삭제하기

dict.Remove("C");
dict.Clear(); // 전체 삭제

 

 

▼ 존재 여부 확인하기

bool hasKey = dict.ContainsKey("A");
bool hasValue = dict.ContainsValue(100);

 

 

▼ Count 확인하기

int count = scores.Count;

 

 

▼ 전체 순회하기

foreach (KeyValuePair<string, int> pair in dict)
{
    Console.WriteLine($"{pair.Key} : {pair.Value}");
}
  • var 로 간단하게 작성 가능하다
foreach (var pair in dict)
{
    Console.WriteLine(pair.Key + " / " + pair.Value);
}
  • 키나 값만 순회도 가능하다
foreach (string key in dict.Keys) { }
foreach (int value in dict.Values) { }

 

 

정리

Dictionary 는 키로 값을 빠르게 찾아서 관리할 수 있는 자료구조이다

foreach 로 Key - Value 를 순회할 수 있다.

 

 

참고 자료

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

 

'⭐C Sharp > 15-1. 제네릭' 카테고리의 다른 글

제네릭 사용 예시 코드  (0) 2025.10.02
제네릭 ( Generic )  (0) 2025.09.27
'⭐C Sharp/15-1. 제네릭' 카테고리의 다른 글
  • 제네릭 사용 예시 코드
  • 제네릭 ( Generic )
DevHoChan
DevHoChan
맨땅에서 시작하는 코딩 도전
  • DevHoChan
    Debugging Life
    DevHoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (374)
      • 🕹️Game Life (1)
      • 🖥️Computer Science (5)
      • 📖TIL (141)
        • 🔥Projects (16)
        • 💡DevTips (5)
        • 🤔발생한 문제와 해결 (5)
        • 🔮Unity Graphics (5)
        • 🎤Interview (3)
        • ✅CodingTest (9)
      • 🚀Game Release (4)
      • 🧊Unity Basic (58)
        • 📌용어 사전 (1)
        • 에디터&인터페이스 (3)
        • 디버그 (1)
        • 라이프사이클 (4)
        • 게임오브젝트 (4)
        • 프리팹 (1)
        • 오브젝트풀링 (4)
        • 애트리뷰트 (2)
        • 트랜스폼 (4)
        • 물리&충돌 (1)
        • 프레임&델타타임 (4)
        • 코루틴&이벤트 (7)
        • 수학&보정함수 (3)
        • 디자인패턴 (9)
        • UGUI (3)
        • 벡터 ( Vector ) (3)
        • 씬 ( Scene ) (2)
        • 데이터 관리 (2)
      • ⭐C Sharp (99)
        • 📌용어 사전 (1)
        • 📌문법 사전 (6)
        • 메모리 관리 (3)
        • 00. 문법 (17)
        • 01. 변수 (3)
        • 02. 자료형 (2)
        • 03. 연산자 (6)
        • 04. 조건문 (2)
        • 05. 반복문 (2)
        • 06. 배열 (3)
        • 07. 메서드(함수) (7)
        • 08. 열거형 (3)
        • 09. 구조체 (2)
        • 10. 참조 (2)
        • 11. 객체 지향 (11)
        • 12. 델리게이트 (3)
        • 13. 디자인 패턴 (7)
        • 14. LINQ (1)
        • 📂▼자료구조 (2)
        • 15-1. 제네릭 (3)
        • 15-2. 배열 (4)
        • 15-3. 리스트 (2)
        • 15-4. 스택과 큐 (2)
        • 15-5. 딕셔너리 해시테이블 (2)
        • 15-6. 트리와 그래프 (3)
      • 📊Algorithm (16)
        • BigO (2)
        • 정렬 (4)
        • 셔플 (2)
        • 탐색 (6)
        • 최적화 (1)
      • 📝Game Design (16)
      • 🤖​AI Tools (12)
        • AI 리뷰 분석 (6)
        • Player2 (0)
        • 3D 모델링 (1)
        • 2D 스프라이트 (0)
        • 이미지 (2)
        • 사운드 (1)
        • 동영상 (1)
        • 문서 (1)
      • 🌍Network (6)
      • 🌱Github (11)
        • 기본 개념 (7)
        • 명령어 (1)
        • 도구 활용 (1)
      • ⚙️Visual Studio (5)
        • 🔧설치 및 환경설정 (2)
        • ⌨️HotKey (1)
        • 🚨디버깅 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    GitHub
    c#
    디자인패턴
    게임기획
    csharp
    til
    게임디자인
    algorithm
    기획
    OOP
    부트캠프
    gamedesign
    unity
    CodingTest
    유니티
    객체지향
    자료형
    문법
    메모리관리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
DevHoChan
Dictionary<TKey, TValue>
상단으로

티스토리툴바