C# 기초 정리 - Dictionary

woollim·2024년 12월 2일
0

C#

목록 보기
12/14

■ 개념

○ 개념

  • C#의 Dictionary 클래스는 키-값 쌍을 저장하고 관리하는 자료 구조
  • Dictionary는 데이터의 키-값 매핑이 필요한 다양한 상황에서 빠르고 효율적인 방법을 제공
  • 공식사이트

○ 특징

  • 키-값 쌍 저장: 각 키는 고유해야 하며, 각 키는 하나의 값에 매핑됨
  • 빠른 검색 속도: 해시 테이블을 기반으로 하여 키를 통해 값을 빠르게 검색할 수 있음
  • 유연한 타입 지정: 키와 값의 타입을 제네릭으로 지정하여 다양한 데이터를 저장 가능
Dictionary<int, string> example = new Dictionary<int, string>();

○ 주요 구성 요소

  • 키 (Key)
    • 고유해야 하며 중복을 허용하지 않음
    • 해시 값을 기반으로 검색됨
  • 값 (Value)
    • 키와 연결된 데이터
    • 값은 중복을 허용함

○ 주요 메서드와 속성

  • 메서드:
    • Add(TKey key, TValue value): 새로운 키-값 쌍을 추가
    • Remove(TKey key): 특정 키를 제거
    • TryGetValue(TKey key, out TValue value): 키를 검색하고 값 반환 시 예외를 방지
  • 속성:
    • Count: Dictionary에 저장된 항목 수
    • Keys: 모든 키 반환
    • Values: 모든 값 반환
  • 예제코드
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Dictionary 선언
        Dictionary<string, int> fruitPrices = new Dictionary<string, int>
        {
            { "Apple", 100 },
            { "Banana", 80 }
        };

        // 데이터 추가
        fruitPrices["Cherry"] = 120;

        // 데이터 검색
        if (fruitPrices.ContainsKey("Apple"))
        {
            Console.WriteLine($"Apple의 가격은 {fruitPrices["Apple"]}원입니다.");
        }

        // 데이터 삭제
        fruitPrices.Remove("Banana");

        // 데이터 순회
        foreach (var item in fruitPrices)
        {
            Console.WriteLine($"과일: {item.Key}, 가격: {item.Value}");
        }
    }
}

○ Dictionary와 유사 자료 구조 비교

○ 주의사항

  • 키 중복 금지: 중복 키를 추가하려 하면 예외가 발생합니다.
  • Null 키: 키는 null이 될 수 없지만, 값은 null 허용.
  • TryGetValue 사용 권장: 키가 존재하지 않을 때 예외를 방지하려면 TryGetValue 사용.


■ 사용법

○ 생성

  • Dictionary<TKey, TValue>: 키와 값을 각각 타입으로 정의
Dictionary<int, string> dict = new Dictionary<int, string>();

○ 주요 메서드

○ 속성

○ 반복문 처리

- Dictionary는 foreach를 사용하여 순회할 수 있음
foreach (KeyValuePair<int, string> pair in dict)
{
    Console.WriteLine($"Key: {pair.Key}, Value: {pair.Value}");
}

○ 기타 사용법

  • 인덱서로 접근:
    • 키를 사용하여 직접 값을 읽거나 설정할 수 있음
dict[1] = "Banana"; // 키 1에 해당하는 값을 설정
Console.WriteLine(dict[1]); // 출력: Banana
  • 예외 처리:
    • 키가 없는 경우 값을 설정하려 하면 KeyNotFoundException이 발생함
    • TryGetValue를 사용하여 예외를 방지할 수 있음

○ 사용 예시

Dictionary<string, int> fruitPrices = new Dictionary<string, int>
{
    { "Apple", 100 },
    { "Banana", 80 }
};

// 데이터 추가
fruitPrices["Cherry"] = 120;

// 데이터 확인
if (fruitPrices.ContainsKey("Apple"))
{
    Console.WriteLine($"Apple의 가격: {fruitPrices["Apple"]}");
}

// 데이터 삭제
fruitPrices.Remove("Banana");

0개의 댓글