해시 테이블(hash table), 해시 맵(hash map), 해시 표는 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조이다. 해시 테이블은 해시 함수를 사용하여 색인(index)을 버킷(bucket)이나 슬롯(slot)의 배열로 계산한다.
추가, 삭제, 검색에서 O(1)의 시간 소요
Hashtable ht = new Hashtable();
ht.Add("집","집에가고싶다");
ht.Add("학원","학원가기싫다");
if(ht.Contains("집"))
{
Console.WriteLine(ht["집"]);
}
Dictionary<int, string> bDay = new Dictionary<int, string>();
bDay.Add(411, "내생일");
bDay.Add(410, "쨌든 누구 생일");
string name = bDay[0];
Console.WriteLine(name);
using System;
using System.Collections;
using System.Collections.Concurrent; // ConcurrentDictionary
using System.Threading;
using System.Threading.Tasks;
namespace ConcurrentApp
{
class Program
{
static void Main(string[] args)
{
var dict = new ConcurrentDictionary<int, string>();
Task t1 = Task.Factory.StartNew(() =>
{
int key = 1;
while (key <= 100)
{
if (dict.TryAdd(key, "D" + key))
{
key++;
}
Thread.Sleep(100);
}
});
Task t2 = Task.Factory.StartNew(() =>
{
int key = 1;
string val;
while (key <= 100)
{
if (dict.TryGetValue(key, out val))
{
Console.WriteLine("{0},{1}", key, val);
key++;
}
Thread.Sleep(100);
}
});
Task.WaitAll(t1, t2);
}
}
}