[UNITY],[C#]/TIL : UNITY

[C#]딕셔너리를 알아보자

네,가능합니다 2024. 10. 31. 22:31

딕셔너리란?

딕셔너리는 키와 값으로 데이터를 저장하는 자료구조이다.

키를 통해 값을 빠르게 검색하고, 업데이트할 수 있다.

 

간단한 예제를 살펴보자.

 

생성 및 추가

Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Player1", 97);

검색

int score = scores["Player1"];

제거

scores.Remove("Player1");

 

그리고 foreach를 이용하여, 모든 키/값을 반복하여 확인할 수 있다.

foreach를 이용하여 키만 검색하기

Dictionary<string, int> scores = new Dictionary<string, int> { {"Player1", 1}, {"Player2", 2} };

foreach (string key in scores.Keys)
{
    Console.WriteLine(key); // Player1, Player2
}

foreach를 이용하여 값만 검색하기

foreach (int value in scores.Values)
{
    Console.WriteLine(value);
}

 

해시테이블 이란?

딕셔너리의 키가 어떤 타입이든, 해시 테이블 구조에서는 키 값을 고유한 해시코드로 생성하여 데이터를 조회하기 때문에 매우 빠른 데이터 접근이 가능하다. 순회 x

 

using System;
using System.Collections.Generic;

public class Inventory
{
    private Dictionary<string, int> items = new Dictionary<string, int>();

    // 아이템 추가
    public void AddItem(string itemName, int quantity = 1)
    {
        if (items.ContainsKey(itemName))
        {
            items[itemName] += quantity; // 있으면 수량추가
        }
        else
        {
            items[itemName] = quantity; // 없으면 아이템 추가
        }
    }

    public void RemoveItem(string itemName, int quantity = 1)
    {
        if (items.ContainsKey(itemName))
        {
            items[itemName] -= quantity;
            if (items[itemName] <= 0)
            {
            	//제거
                items.Remove(itemName);
            }
        }
    }

    // 인벤토리 표시
    public void PrintInventory()
    {
        foreach (var item in items)
        {
            // 로직
        }
    }
}

 

이걸 왜 안썼지 ????????????????????????????? ????????????????????????????? ????????????????????????????? ?????????????????????????????