- 在字典中,儲存的是[鍵,值],集合可以看作[值,值]的形式儲存元素,字典也稱為對映
方法 | 描述 | 備註 |
---|---|---|
set(key, value) | 向字典中新增新元素 | |
delete(key) | 通過某個鍵值從字典中移除對應的資料值 | |
has(key) | 判斷某個鍵值是存在於這個字典中 | |
get(key) | 通過鍵值獲取對應的資料值 | |
size() | 返回字典所有元素的數量 | |
clear() | 刪除字典中所有元素 | |
keys() | 將字典包含的所有鍵名以陣列形式返回 | |
values() | 將字典包含的所有數值以陣列形式返回 |
- 雜湊表(hashtable)
雜湊演算法的作用是儘可能快的在資料結構中找到一個值
雜湊函式的作用是給定一個鍵值,返回該值在表中的位置
- 最常見的雜湊函式“lose lose”
將每個鍵值中的每個字母的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
}