public static void main(string args)
* public synchronized v put(k key, v value)
* entry<?,?> tab = table;
* int hash = key.hashcode();//計算雜湊值,此處說明value值不能為null,否則會出現空指標異常
* int index = (hash & 0x7fffffff) % tab.length;//計算位置
* entryentry = (entry)tab[index];
* for(; entry != null ; entry = entry.next)
* }
** addentry(hash, key, value, index);//存在擴容機制
* return null;
* }
* //新增元素addentry
* private void addentry(int hash, k key, v value, int index)
* entrye = (entry) tab[index];
* tab[index] = new entry<>(hash, key, value, e);
* count++;
* }
* 重雜湊
* protected void rehash()
* entry<?,?> newmap = new entry<?,?>[newcapacity];
** modcount++;
* //重新計算閾值:新的容量*載入因子和最大值+1中最小的值,閾值的作用顯然實在新增元素是判斷是否擴容陣列發揮作用
* threshold = (int)math.min(newcapacity * loadfactor, max_array_size + 1);
* table = newmap;
* //將舊的元素通過for迴圈放入新的陣列
* for (int i = oldcapacity ; i-- > 0 ;)
* }
* }
* **/
hashtable.remove("ls");
/*** 刪除元素:
* 1.計算雜湊值
* 2.通過雜湊值找位置
* 3.通過位置找節點,遍歷整個鍊錶,如果存在,根據鍊錶的刪除元素的方法刪除即可,
* 最後需要將value值賦值為null,避免記憶體洩漏
* *
* public synchronized v remove(object key) else
* count--;
* v oldvalue = e.value;
* e.value = null;
* return oldvalue;
* }
* }
* return null;
* }**/
integer ls = hashtable.get("ls");
/*** 通過鍵獲取元素,也是:
* 1.計算雜湊值
* 2.通過雜湊函式計算位置
* 3.遍歷查詢,返回value
* public synchronized v get(object key)
* }
* return null;
* }**/
hashtable.contains("ls");
/***
* public synchronized boolean contains(object value)
* entry<?,?> tab = table;
* for (int i = tab.length ; i-- > 0 ;)
* }
* }
* return false;
* }
*//**
* * 遍歷方式有四種,如下
*///使用列舉的方法遍歷
enumerationelements = hashtable.elements();
while (elements.hasmoreelements())
//節點的方式遍歷
set> entries = hashtable.entryset();
iterator> iterator = entries.iterator();
while (iterator.hasnext())
//key遍歷
setstrings = hashtable.keyset();
iteratoriterator1 = strings.iterator();
while (iterator1.hasnext())
//value值遍歷
collectionvalues = hashtable.values();
iteratoriterator2 = values.iterator();
while (iterator2.hasnext())
}
Java Hashtable 原始碼簡要分析
hashtable比較早,是執行緒安全的雜湊對映表。內部採用entry陣列,每個entry均可作為鍊錶的頭,用來解決衝突 碰撞 hashmap與hashtable基本原理一樣,只是hashmap允許null的key value,且非執行緒安全。linkedhashmap從字面看有兩個意思,hash和...
easyui常用控制項常用方法
easyui常用控制項使用方法 1.文字框 取值 id textbox getvalue 或 id val 2.鏈結按鈕 register 3.日曆控制項 顯示年月日 取值 kssj datebox getvalue 顯示年月日時分秒 取值 regtime datetimebox getvalue ...
常用指令碼 常用指令碼整理
1 addloadevent 網頁載入完成後把多個自己編寫的函式繫結到window.onload事件中 把現有的window.onload事件處理函式的值存入便令oldonload。如果在這個處理函式上還沒有繫結任何函式,就像平時那樣把新函式新增給它。如果在這個處理函式上已經繫結了一些函式,就把新函...