哈希表(HashTable)探究(转)
HashTable 通常稱為哈希表,它表示鍵(key)/值(value)對的集合。
1、HashTable 的構造函數:
?????????? HashTable()????????????? //初始化為0個元素的空實例
?????????? HashTable(Int32)????? //初始化為int32 個元素的新實例
?????????? 例子:
????????????????????? HashTable myHashTable1 = new HashTable();
????????????????????? HashTable myHashTable2 = new HashTable(5);
2、HashTable 元素的特點
?????????? HashTable 獲取元素的方法是使用“鍵”訪問鍵所對應的值,即HashTable[key]。下面是例子:
?????????? using System;
?????????? using System.Collections.Generic;
?????????? using System.Text;
?????????? using System.Collections;
?????????? namespace Example9_22
?????????? {
?????????????? class Program
?????????????? {
?????????????????? static void Main(string[] args)
?????????????????? {
?????????????????????? Hashtable myHashTable = new Hashtable();
?????????????????????? //插入相應的鍵和值組成的元素
?????????????????????? myHashTable.Add(1,"H");
?????????????????????? myHashTable.Add(2,"e");
?????????????????????? myHashTable.Add(3,"l");
?????????????????????? myHashTable.Add(4,"l");
?????????????????????? myHashTable.Add(5,"o");
?????????????????????? myHashTable.Add("int",1);
?????????????????????? myHashTable.Add("double",2.3);
?????????????????????? myHashTable.Add("bool",true);
?????????????????????? //修改相應的鍵和值組成的元素
?????????????????????? myHashTable["int"] = 23;
?????????????????????? myHashTable["double"] = 1.5;
?????????????????????? myHashTable["bool"] = false;
?????????????????????? //輸出相應的鍵和值組成的元素
?????????????????????? Console.WriteLine(myHashTable[1]);
?????????????????????? Console.WriteLine(myHashTable[2]);
?????????????????????? Console.WriteLine(myHashTable[3]);
?????????????????????? Console.WriteLine(myHashTable[4]);
?????????????????????? Console.WriteLine(myHashTable[5]);
?????????????????????? Console.WriteLine(myHashTable["int"]);
?????????????????????? Console.WriteLine(myHashTable["double"]);
?????????????????????? Console.WriteLine(myHashTable["bool"]);
?????????????????????? Console.ReadLine();
?????????????????? }
?????????????? }
?????????? }
?????????? 程序運行結果如下:
?????????????????????????????????????????? H
?????????????????????????????????????????? e
?????????????????????????????????????????? l
?????????????????????????????????????????? l
?????????????????????????????????????????? o
?????????????????????????????????????????? 23
?????????????????????????????????????????? 1.5
?????????????????????????????????????????? False
3、Hashtable 元素的操作
????????? ● 添加操作的定義如下:
???????????????????????????????????????????????? public virtual void Add(object key,lbject value)
?????????????????????????? 注意:“鍵”不能為空,“值可以為空”。
????????? ● 刪除操作:
??????????????????????????????? HashTable.Clear()???????? //刪除所有元素,不帶任何參數,清空后HashTable的元素個數為0。
??????????????????????????????????????? 示例:myHashTable.Clear()
??????????????????????????????? HashTable.Remove()??? //刪除指定“鍵”所在的元素。
??????????????????????????????????????? 其定義如下:
????????????????????????????????????????????????????????????? public virtual void Remove(Object key)
??????????????????????????????????????? 示例:myHashTable.Remove("int");
????????如果HashTable 為只讀時進行上述操作會出現異常。
4、Hashtable 的遍歷
???????? 由于Hashtable 的鍵值對屬于DictionaryEntry類型,所以在用foreach 遍歷Hashtable 時,類型參數是:DictionaryEntry。看下面示例:
??????????????? foreach (DictionatyEntry,myDE in myHashTable)
??????????????? {
???????????????????? Console.WriteLine("\t{0}\t{1}",myDE.Key,myDE.Value);??? //注意讀取鍵值的方法
??????????????? }
5、Hashtable 的查詢
???????? Hashtable 查詢有以下方法:
?????????????????????????????????????????????????????? ● Hashtable.Contains??????????? //判斷HashTable中是否包含指定“鍵”。
?????????????????????????????????????????????????????? ● Hashtable.ContainsKey????? //判斷HashTable中是否包含指定“鍵”。同上
?????????????????????????????????????????????????????? ● Hashtable.ContainsValue?? //判斷HashTable中是否包含指定值。很好!
???????? 示例:
??????????????????? Console.WriteLine("myHashTable 包含鍵1:{0}",myHashTable.Contains(1));
??????????????????? Console.WriteLine("myHashTable 包含鍵6:{0}",myHashTable.ContainsKey(6));
??????????????????? Console.WriteLine("myHashTable 包含值true:{0}",myHashTable.ContainsValue(true));
??????????????????? Console.WriteLine("myHashTable 包含值3.3:{0}",myHashTable.ContainsValue(2.2));
6、HashTable 表的優點
???????? HashTable是System.Collections命名空間提供的一個容器,HashTable中的key/value均為object類型,所以HashTable可以支持任何類型的key/value鍵/值對。
???????? HashTable的優點就在于其索引的方式,速度非常快。
******************
key區分大小寫
提兩個問題:
??????????????????????? △可以輸入重復的鍵嗎?
??????????????????????? △HashTable 可以插入鍵值嗎?
轉載于:https://www.cnblogs.com/chuncn/archive/2008/04/10/1147406.html
總結
以上是生活随笔為你收集整理的哈希表(HashTable)探究(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac无法打开“XX”,因为Apple无
- 下一篇: java代码编写出现的陷阱-1:警惕变长