java中實現簡單HashMap(就是自己寫簡單的,不要太複雜)

時間 2021-08-30 09:52:02

1樓:

hashmap這個結構,是從一個key到一個value的對映的集合,其中的hash是指用hash陣列(也就是雜湊表)來存放value集合。

實現思路上,通過key的hashcode來確定value儲存的位置,遇到衝突的位置就通過某個規則找下一個位置。

實現的簡述:

1. value陣列,object values;

2. key,object key,可能要考慮hashcode方法和equals方法的重寫;

3. 衝突解決規則,下一個位置=(該位置*2+123)% values.size();

需要注意的是,values存的元素不是一個value而已,還要保留用來確定位置的hashcode值,因為在衝突的時候,hashmap的get(key)方法需要比較hashcode來確定是不是key對應的value。

更好的辦法,是values存一個連結串列,衝突的元素都放在連結串列裡,在get(key)的時候遍歷這個連結串列來獲得value。再細節的東西,自己想想吧,這個寫起來也不算複雜,可以動手試試。

2樓:匿名使用者

我覺得jdk裡面那個hashmap已經很簡單了。

你看著那麼多行**,其實很多都是註釋。

頂多把table擴容的功能去掉。

3樓:匿名使用者

hashmapmap=new hashmap();//定義map.put("key","我要最佳答案");//給map插值string str=map.get("key");//從map中取值

ssytem.out.println(str)

java怎麼實現對另類中的按鈕監聽

蕭曼 你只有一個窗體,你想要的就是在一個 窗體類 中,監聽一個 監聽事件類 的意思嗎只要把監聽事件類寫在窗體類中,不就行了嗎?class gamestate begin extends frame 內部類 按鈕事件監聽 class buttonlisten implements actionlist...

java中math方法舉例,Java中Math方法舉例

math 類包含基本的數字操作,如指數 對數 平方根和三角函式。與 strictmath 類的某些數值方法不同,並不是 math 類的所有等效函式的實現都定義為返回逐位相同的結果。這一寬限允許在不要求嚴格可重複性的地方實現更好的效能。預設情況下,很多 math 方法僅呼叫 strictmath 中的...

在java中為什麼要使用類圖,在java中為什麼要使用類圖

其實也不是一定要使用類圖的,使用類圖就是為了讓你清楚的理解類之間的關係,比如a類繼承了b類,同時又實現了c介面,等等這樣的關係用類圖來表示的話一目瞭然。使用類圖還有一個好處,就是在軟體工程中講的一個軟體開發的 詳細設計 階段,用類圖表示出系統的結構後好多工具支援自動生成 就是從類圖直接生成 的基本結...