實現簡單的HashMap

2021-09-28 10:48:26 字數 1147 閱讀 2440

hashmap底層實現是採用了雜湊表,屬於一種基本的資料結構,而雜湊表的基本結構是「陣列+鍊錶」之前我們說到陣列和鍊錶,它們之間的優缺點如下

陣列的查詢速度快,增刪效率低

鍊錶的增刪效率高,查詢速度低

這裡我們想如何才能把這兩者的優勢集中起來呢?於是雜湊表就出來了。

我們手寫乙個hashmap類來看一下儲存原理

package com.boker.collection;

/** * 用於myhashmap中

*/public

class

node2

package com.boker.collection;

/** * 雜湊表底層是陣列+鍊錶

* @author administrator

* */

public

class

myhashmap

//存放資料

public

void

put(k key , v value)

else

else

}//key沒有重複的話,則新增到當前陣列鍊錶的最後if(

!keyisrepeat)}}

//獲取值

public v get

(k key)

else}}

return value;

}public

intmyhash

(int v ,

int length)

@override

public string tostring()

} sb.

setcharat

(sb.

length()

-1,'}');

return sb.

tostring();}}

package com.boker.collection;

public

class

testmap

}

執行結果:

手動實現簡單HashMap。

hashmap實現方式兩種 陣列加鍊表 陣列加紅黑樹 這裡只簡單實現了第一種方式,並且未實現拓容。雜湊函式用了最簡單的取餘法。順便加上了泛型,簡單練習一下 author 馬潔 date 2019 10 26 19 32 public class link public link 插入乙個鍵值對,如果...

C 簡單實現HashMap

執行緒不安全 2倍擴容,方便使用位運算計算桶位置 但存在極端情況下的弊端 不支援將鍊錶轉為紅黑樹 pragma once include hash函式 inthash int key 執行緒不安全容器 2倍擴容,方便計算 不支援鍊錶轉為紅黑樹 class hashmap node findnode ...

自己實現乙個簡單的hashmap

這個hashmap實現方式應該是jdk1.7的,在資料量小的時候和jdk1.8實現的差不多,不過我這個沒有採用鍊錶長度8時轉化紅黑樹增加查詢效率,在擴容時也是全部元素重新hash,計算新的位置,所以如果大資料量的時候,複製到新的陣列就會比較慢.jdk8裡面對複製到新的陣列也是有優化的,我這裡就沒做了...