hash表的使用

2021-10-03 19:35:07 字數 1867 閱讀 1386

事實上不管使用陣列還是鍊錶儲存資料都會存在較大缺陷,

當你使用陣列時,難於刪除和新增資料

當你使用鍊錶時難於查詢資料

因此hash表綜合了兩者的優缺點,使的查詢和新增等操作既不至於複雜也不至於簡單。

因此hash表的原理可以是陣列中存鍊錶,鍊錶上存資料

簡單的建立方式如下:

public

class

hnode

item data;

hnode next;

hnode parent;

}//鍊錶

public

class

item

int key;

string value;

}//資料

public

class

myhash

//hash表的的簡單形式

上面所形成的hash表可以用下圖表示

其實也就是之前的陣列與鍊錶新增方式,查詢也一樣。。

新增

public

void

put(

int key,string value)

else

/*陣列下無資料時直接存入,

反之作為該陣列的下個節點存入*/

count++

;int t=count/memo.length;

if(t>2)

memo=memo_2;

//儲存次數超過陣列長度的三倍時就將陣列變長三倍 }}

public

intsize()

public

intlength()

查詢

public string get

(int key)

用上述方法執行此串**:

public

static

void

main

(string[

] args)

hb.put(k2, v2)

;

hb.put(k3, v3)

;

hb.put(k4, v4)

;int count =hb.

size()

; string word=hb.

get(k2)

; string word_1=hb.

get(k4)

; system.out.

println

("陣列長度"

+hb.

length()

);system.out.

println

("數量"

+count)

; system.out.

println

(k2+

"get:"

+word)

; system.out.

println

(k4+

"get:"

+word_1)

;}

結果如下:

Hash表的使用

hash表能夠實現在o 1 時間內對資料訪問,雖然空間複雜度很高,但是時間複雜度很好。所以下面說一些使用hash的演算法。利用hash可以實現統計字元的個數,然後在遍歷一次得到最早的那個只出現一次的字元。注意 如果傳入的字串為null或者字串裡沒有只出現一次的字元,這兩種情況都要返回 1。int f...

hash表 hash演算法

概念 雜湊表 hash table。也叫雜湊表 是依據關鍵碼值 key value 而直接進行訪問的 資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。給定表m,存在函式f key 對隨意給定的keyword值ke...

Hash表和Hash衝突

hash表中的元素儲存位址是通過hash函式計算出來的,當要取出指定元素的時候,直接通過hash函式計算出元素的儲存位址。有時候會出現key不同,但是通過hash函式計算出來的值相同,這個值相同意味著這兩個key要存在同一位置,這顯然不對,這就是hash衝突。hash函式有多種構造方法,常見的有直接...