Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 Hashtable과 Dictionary 다루기: 핵심 메서드와 예제 정리

C#에서 데이터를 키(Key)와 값(Value) 형태로 저장하고 관리할 때는 HashtableDictionary를 사용할 수 있습니다. 두 컬렉션은 비슷한 역할을 하지만 동작 방식과 타입 안정성에서 차이가 있습니다. 이번 글에서는 두 클래스의 주요 메서드와 함께 실제 예제 코드를 살펴보겠습니다.


1. Hashtable이란?

Hashtable 클래스는 키의 해시 코드(hash code)를 기반으로 구성된 키-값 쌍의 컬렉션을 나타냅니다. 배열처럼 인덱스로 접근하는 것이 아니라 키를 사용해 요소에 접근하며, System.Collections 네임스페이스에 포함되어 있습니다.

주요 메서드

번호메서드 및 설명
1Add(object key, object value)
지정한 키와 값을 Hashtable에 추가합니다.
2Clear()
Hashtable의 모든 요소를 제거합니다.
3ContainsKey(object key)
특정 키가 Hashtable에 존재하는지 여부를 확인합니다.
4ContainsValue(object value)
특정 값이 Hashtable에 존재하는지 여부를 확인합니다.

사용 예제

다음 예제는 부서 정보를 Hashtable에 저장하고, 중복 여부를 확인한 후 전체 목록을 출력하는 코드입니다.

using System;
using System.Collections;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            Hashtable ht = new Hashtable();

            ht.Add("D01", "Finance");
            ht.Add("D02", "HR");
            ht.Add("D03", "Operations");

            if (ht.ContainsValue("Marketing")) {
                Console.WriteLine("This department name is already in the list");
            } else {
                ht.Add("D04", "Marketing");
            }

            ICollection key = ht.Keys;

            foreach (string k in key) {
                Console.WriteLine(k + ": " + ht[k]);
            }
            Console.ReadKey();
        }
    }
}

출력 결과

D04: Marketing
D02: HR
D03: Operations
D01: Finance

Hashtable은 내부적으로 해시 코드를 기반으로 요소를 배치하기 때문에 출력 결과에서 키의 순서가 입력 순서와 다르게 나타날 수 있습니다.

2. Dictionary란?

Dictionary<TKey, TValue>는 C#에서 키와 값을 저장하는 제네릭(Generic) 컬렉션으로, System.Collections.Generic 네임스페이스에 포함되어 있습니다. Hashtable과 달리 타입 안정성(Type Safety)을 제공하며, 박싱(Boxing)/언박싱(Unboxing) 오버헤드가 없어 일반적으로 더 나은 성능을 보여줍니다.

주요 메서드

번호메서드 및 설명
1Add(TKey, TValue)
Dictionary에 키-값 쌍을 추가합니다.
2Remove(TKey)
지정한 키를 가진 요소를 제거합니다.
3ContainsKey(TKey)
지정한 키가 Dictionary에 존재하는지 확인합니다.
4ContainsValue(TValue)
지정한 값이 Dictionary에 존재하는지 확인합니다.
5Count
저장된 키-값 쌍의 개수를 반환합니다.
6Clear()
Dictionary의 모든 요소를 제거합니다.

사용 예제

아래 예제는 Dictionary에 요소를 5개 추가한 후, 저장된 전체 개수를 출력하는 방법을 보여줍니다.

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {

        IDictionary<int, int> d = new Dictionary<int, int>();
        d.Add(1, 44);
        d.Add(2, 34);
        d.Add(3, 66);
        d.Add(4, 47);
        d.Add(5, 76);

        Console.WriteLine(d.Count);
    }
}

출력 결과

5

마무리: Hashtable vs Dictionary

Hashtable과 Dictionary는 모두 키-값 쌍을 효율적으로 관리할 수 있는 컬렉션입니다. 새로운 프로젝트에서는 타입 안정성과 성능이 우수한 Dictionary<TKey, TValue>를 사용하는 것이 권장되며, 레거시 코드나 비제네릭 환경을 다룰 때는 Hashtable을 활용하면 됩니다.