方法 | 描述 | 備註 |
---|---|---|
set(key, value) | 向字典中添加新元素 | |
delete(key) | 經過某個鍵值從字典中移除對應的數據值 | |
has(key) | 判斷某個鍵值是存在於這個字典中 | |
get(key) | 經過鍵值獲取對應的數據值 | |
size() | 返回字典全部元素的數量 | |
clear() | 刪除字典中全部元素 | |
keys() | 將字典包含的全部鍵名以數組形式返回 | |
values() | 將字典包含的全部數值以數組形式返回 |
散列算法的做用是儘量快的在數據結構中找到一個值
散列函數的做用是給定一個鍵值,返回該值在表中的位置算法
將每一個鍵值中的每一個字母的ascii值相加,而後將結果做爲值在hashtable中的索引,查找的時候經過因此查找,複雜度爲O(1)
此方法會在計算ascii值和時出現衝突,解決衝突的方法:分離連接,線性查探,雙散列法數組
在散列表的每一個位置建立一個鏈表並將元素儲存在裏面,獲取的時候,遍歷當前位置上的鏈表,並比對key值,進行獲取數據結構
項表中某個位置增長新元素時,若索引爲index的位置已經佔了,就嘗試index+1,以此類推函數
「djb2」散列函數性能
var djb2HashCode = function (key) { var hash = 5381;// 初始化一個hash值並賦值爲一個質數(目前大多數都是用5381) for (var i = 0; i < key.length; i++) { hash = hash * 33 + key.charCodeAt(i); } return hash % 1013 }