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介面,等等這樣的關係用類圖來表示的話一目瞭然。使用類圖還有一個好處,就是在軟體工程中講的一個軟體開發的 詳細設計 階段,用類圖表示出系統的結構後好多工具支援自動生成 就是從類圖直接生成 的基本結...