
해시테이블이란?
- 해시테이블은 Dictionary와 같이 "키(Key) - 값(Value)" 구조를 가진 컬렉션입니다. 해시테이블에서 키와 값은 'object' 자료형을 사용하며, 모두 object형식으로 선언되어 모든 데이터 타입을 가질 수 있습니다.
- using System.Collections; 를 통해 사용할 수 있습니다.

해시 테이블을 사용해보자!
1. Add(key, value) - 키/값 추가
- 키와 값을 해시 테이블에 추가합니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
foreach (object k in ht.Keys)
{
Debug.Log("Value : " + ht[k]);
}
}
2. Remove(key) - 지정 키의 값을 제거
- 괄호 안의 key와 연결된 value를 제거합니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
ht.Remove("adress");
foreach (object k in ht.Keys)
{
Debug.Log("Value : " + ht[k]);
}
}
3. Keys / Values
- Keys: 해당 해시 테이블의 모든 키를 가져옵니다.
- Values: 해당 해시 테이블의 모든 값을 가져옵니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
// ICollection : 해시 테이블 컬렉션을 저장할 수 있는 특수 데이터 유형.
// var도 사용가능. var : 개사기 자료형.
ICollection key = ht.Keys;
ICollection value = ht.Values;
foreach (var k in key)
{
Debug.Log("Key : " + k);
}
foreach (var v in value)
{
Debug.Log("Value : " + v);
}
}
4. ContainsKey() / ContainsValue()
- ContainsKey(key): 해시테이블에 해당 키의 존재 유무를 확인합니다.
- ContainsValue(value): 해시테이블에 해당 값의 존재 유무를 확인합니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
Debug.Log(ht.ContainsKey("name"));
Debug.Log(ht.ContainsKey("sex"));
Debug.Log(ht.ContainsValue("짱구"));
Debug.Log(ht.ContainsValue("남자"));
}
5. Count - 키/값 쌍의 개수
- Count는 해당 해시테이블의 키와 값 한 쌍을 1개로 정하여 총 개수를 반환합니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
int num = ht.Count;
Debug.Log(num);
}
6. Clone - 복사본 생성
- Clone은 해당 해시테이블의 복사본을 만듭니다.
public void TestHashTable()
{
Hashtable ht = new Hashtable();
ht.Add("name", "짱구");
ht.Add("age", 5);
ht.Add("adress", "떡잎마을");
//ht에 저장된 object형태의 데이터를 복사해서 htClone에 전달하기 때문에 명시적 형변환을 해줘야함.
Hashtable htClone = (Hashtable)ht.Clone();
foreach (object item in htClone.Values)
{
Debug.Log(item);
}
}
'C# > 자료구조 이해하기' 카테고리의 다른 글
C# 해시셋(HashSet)에 대해 알아보자! (0) | 2024.03.18 |
---|---|
C# object 데이터 타입과 값, 참조 형식을 알아보자! (0) | 2024.03.13 |
C# 연결리스트(Linked List)에 대해 알아보자! (0) | 2024.03.13 |
C# 오름차순과 내림차순 정렬에 대해 알아보자! (0) | 2024.03.10 |
C# List(리스트)에 대해 알아보자! (0) | 2024.03.10 |