English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hashtable 是一个存储键值对的非泛型集合,类似于泛型 Dictionary<TKey,TValue> 集合。它通过计算每个键的哈希码优化查找,并在内部将其存储在不同的 bucket 中,然后在访问值时匹配指定键的哈希码。
Hashtable 存储键值对。
属于System.Collection命名空间。
实现IDictionary接口。
键必须是唯一的,不能为null。
值可以为null或重复。
可以通过在索引器中传递相关键来访问值,例如 myHashtable[key]
元素作为 DictionaryEntry 对象存储。
下面的示例演示如何创建哈希表和添加元素。
Hashtable numberNames = new Hashtable(); numberNames.Add(1,"One"); //使用Add()方法添加键/值 numberNames.Add(2,"Two"); numberNames.Add(3,"Three"); //以下引发运行时异常:已添加键。run-time exception: key already added. //numberNames.Add(3, "Three"); foreach(DictionaryEntry de in numberNames) Console.WriteLine("Key: {0}, Value: {)1} //COLLECTION 사용-initializer 문법으로Hashtable 생성 var cities = new Hashtable(){ {"영국", "런던,만체스터,브리스톨"}, {"미국", "시카고,뉴욕,워싱턴"}, {"인도", "孟买,ニューデリー,포네"} }; foreach(DictionaryEntry de in cities) Console.WriteLine("Key: {0}, Value: {)1}
Hashtable 컬렉션이 딕셔너리의 모든 요소를 포함할 수 있습니다. 이렇게 됩니다.
Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "one"); dict.Add(2, "two"); dict.Add(3, "three"); Hashtable ht = new Hashtable(dict);
INDEXER에 키를 전달하여 해시테이블에서 기존 키의 값을 검색할 수 있습니다.Hashtable는 비가변형 컬렉션인 데다가 값을 검색할 때 강제 변환을 해야 합니다.
//COLLECTION 사용-initializer 문법으로Hashtable 생성 var cities = new Hashtable(){ {"영국", "런던,만체스터,브리스톨"}, {"미국", "시카고,뉴욕,워싱턴"}, {"인도", "孟买,ニューデリー,포네"} }; string citiesOfUK = (string) cities["영국"]; //문자열로 변환 string citiesOfUSA = (string) cities["미국"]; //문자열로 변환 Console.WriteLine(citiesOfUK); Console.WriteLine(citiesOfUSA); cities["영국"] = "리버풀,브리스톨"; // UK의 값을 업데이트 cities["미국"] = "로스앤젤레스, 보스턴"; //USA의 값을 업데이트 if(!cities.ContainsKey("프랑스")){ cities["프랑스"] = "파리"; }
Remove() 메서드는 해시테이블에서 지정된 값과 일치하는 키-값을 제거합니다. 지정된 키가 해시테이블에 없으면 KeyNotFoundException이 발생합니다. 따라서 제거하기 전에 ContainsKey() 메서드를 사용하여 기존 키를 확인해야 합니다.
Clear() 메서드를 사용하면 모든 요소를 한 번에 제거할 수 있습니다。
var cities = new Hashtable(){ {"영국", "런던,만체스터,브리스톨"}, {"미국", "시카고,뉴욕,워싱턴"}, {"인도", "孟买,ニューデリー,포네"} }; cities.Remove("UK"); // UK를 제거하십시오 //UK를 제거하십시오 //런타임 예외를 발생시킵니다: KeyNotFoundException if(cities.ContainsKey("France")){ // 키를 꺼내기 전에 확인하십시오 UK를 제거하십시오 } cities.Clear(); //모든 요소를 제거하십시오
아래는 Hashtable 클래스의 계층 구조를 설명합니다.