- 在字典中,存储的是[键,值],鸠合能够看做[值,值]的情势存储元素,字典也称为映照
要领 | 形貌 | 备注 |
---|---|---|
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
}