輕鬆學習C 的雜湊表

2022-09-26 07:00:10 字數 2815 閱讀 3320

在c#語言中,還有一種用於快速搜尋而組織的鍵/值組合的陣列,這種陣列叫做關聯陣列,也叫做雜湊表(hashtable)。

雜湊表也在system.collection命名空間下,用於處理和表現類似key/value的鍵值對,其中key通常用來快速查詢,同時key是區分大小寫,且key必須是唯一的。它沒有有效的排序,所進行的是內在的排序,value用於儲存對應於key的值。雜湊表中key/value鍵值對均為object型別,所以雜湊表可以支援任何型別的key/value鍵值對。nunqzqsyk雜湊表的每個元素是乙個儲存在dictionaryentry物件中的鍵值對鍵值對(所謂的dictionaryentry結構,就是定義可設定或檢索的字典鍵值對,有乙個key屬性,乙個value屬性,分別代表鍵和值)。

雜湊表最大的優點就是把資料的儲存和查詢消耗的時間大大降低,幾乎可以看成常數時間,而代價僅僅是消耗較多的記憶體。然而在當前可利用記憶體越來越多的情況下,用空間換時間的做法是值得的。另外,編碼比較容易也是它的特點之一。

一、hashtable元素的新增

hashtable提供了乙個新增元素的key/value鍵值對add方法,該方法有兩個引數,乙個是鍵,功能相當於陣列中的索引,幫助查詢,另乙個是值,可以把它看做陣列中的元素,其格式為:hashtable物件.add(鍵,值)

例一、利用上述的方法進行hashtable物件的元素的新增

using system;

using system.collections;//需要新增的命名空間

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 雜湊表 } }

輸出的結果為:新增前al的元素個數為:0

&www.cppcns.comnbsp;     新增後al的元素個數為:3

二、hashtable元素的刪除

hashtable物件的元素的刪除可通過remove方法,clear方法來進行。

(1).clear方法將清除所有的元素,其格式為:hashtable物件.clear()

(2).remove方法接受乙個key引數,作用是移除乙個key/value鍵值對,其格式為:hashtable物件.remove()

例二、利用上述方法進行hashtable元素的刪除

using system;

using system.collections;//需要新增的命名空間

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 雜湊表 } }

輸出的結果為:新增前al的元素個數為:0

新增後al的元素個數為:3

刪除c後al的元素個數為:2

三、hashtable元素的遍歷

遍歷雜湊表需要用到dictionaryentry(字典鍵/值對)object。

例三、利用foreach語句對雜湊表進行遍歷

using system;

using system.collections;//需要新增的命名空間

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 雜湊表

console.readline();

} } }

輸出的結果為:新增前al的元素個數為:0

新增後al的元素個數為:3

鍵位:1 值為:a

鍵位:2 值為:b

&n程式設計客棧bsp;               鍵位:3 值為:c

四、hashtable元素的查詢

hashtable集合提供三個查詢方法查詢hashtable中的元素,這三個方法為contains方法,containske和方法和containsvalue方法。

contains方法,containskey方法是根據hashtable的key值去查詢,如果找到,返回匹配的最後一項的自0開始的索引,否則返回-1,其格式為:

hashtable物件.contain值)或 hashtable物件.containskey(key值)

containvalue方法是根據hashtable的value值去查詢,如果找到,返回匹配的最後一項自0開始的索引,否則,返回-1,其格式為:hashtable物件.containsvalue(value值) 

例四、利用上述的方法進行hashtable元素的查詢

using system;

using system.collections;//需要新增的命名空間

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 雜湊表

if (al.containskey("2"))

if (al.containsvalue("c"))

console.readline();

} } }

輸出的結果為:新增前al的元素個數為:0

新增後al的元素個數為:3

1存在al中

2存在al中

c存在al中

雜湊表(雜湊表) C 實現

雜湊函式就是 關鍵字key 到 值value 的對映 value f key value反映的是關鍵字key的儲存位址。直接定址法 f key a key b 例如存放不同出生年份的人口數量,出生年份是關鍵字,那麼可以用直接定址法。直接定址法的優點是簡單均勻,也不會產生衝突 缺點是該方法適合表比較小...

學習雜湊表

雜貨店商品對應的 舉例 簡單查詢就是拿出商品價目本,這個價目本並不是有序的,顧客問蘋果多少錢,需要乙個乙個去查詢某乙個商品的 需要o n 時間。同樣是乙個價目本,但是按商品名稱字母排序的,這樣需要的時候更短為o logn 但這樣我還是覺得查詢太慢,怎麼辦,這時候需要一名能記住所有商品 的員工,這樣一...

雜湊表 學習

看了幾篇文章,主要意思就是用簡單的值index,去索引複雜的值key,進而找到想要的值value.雜湊演算法主旨 index f key 資料存放格式 key.value 但是存在問題是,1.雜湊演算法使不同的key產生相同的index 2.分配給雜湊表的記憶體滿了之後,整個雜湊表的遷移太累贅了。針...