C# 선형 자료구조 - 해쉬테이블 & 딕셔너리(HashTable & Dictionary<T>)

728x90
  • 해쉬테이블(Hashtable)

- Key 값을 Hash 함수에 넣어 코드값으로 변경한 후 Bucket이라는 저장 공간에 인덱스 번호를 매핑하여 데이터를 저장    하는 것

- Hash Collision 발생 시(값끼리 충돌) Seperate chaining(Liked List로 노드 연결)으로 해결, Open addressing(빈 버킷 사

  용)

 

  • .Net의 HashTable과 Dictionary<T>의 특징

- 키를 가지고 빠르게 값에 접근하기에 좋다

- 순서나 중복되는 데이터가 있는 경우에는 맞지 않다

- 미리 저장공간을 확보하기 때문에 메모리 효율이 좋지 않다

- 일반적으로 Dictionary를 더 많이 사용한다.(제네릭)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hashtable_dictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hashtable & Dictionary");

            Hashtable hash = new Hashtable();

            hash.Add(0, "정현");
            hash.Add(1, "패스트캠퍼스");
            hash.Add(2, "c#");
            hash.Add(3, "자료구조");

            Console.WriteLine(hash[1]);

            Dictionary<string, string> dic = new Dictionary<string, string>();

            dic.Add("정현", "010-0000-0001");
            dic.Add("패캠", "010-0000-0002");
            dic.Add("c#", "010-0000-0003");


            if (!dic.ContainsKey("용희"))
            {
                dic.Add("용희", "010-2222-3333");
            }

            dic.Remove("c#");

            foreach (var item in dic.Keys)
            {
                Console.WriteLine(item + " : " + dic[item]);
            }

        }
    }
}

 

728x90