一、哈希表
-
哈希表是根据关键码的值而直接进行访问的数据结构。比如数组就是一张哈希表。
-
哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。
-
一般哈希表都是用来快速判断一个元素是否出现集合里。【算法题常用】
二、常见的三种哈希结构
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。
- 1.数组
- 2.set (集合)
- 一种**无序且唯一**的数据结构。
- ES6中有集合,名为set。
- 集合的常用操作:去重、判断某元素是否在集合中、求交集…
// 查看集合
const arr = [1, 1, 2, 2, 2];
const set = new Set(arr)//Set(2) {1, 2}
//查看集合的长度
console.log(set.size);//2
// 去重
const arr = [1, 1, 2, 2, 2];
const arr2 = [...new Set(arr)];
console.log(arr2); //[ 1, 2 ]
// 判断元素是否在集合中
const set = new Set(arr);
console.log(set.has(3)); //false
//求交集
const set2 = new Set([2, 3]);
const set3 = new Set([...set].filter(item => set2.has(item)));
console.log(set3); //{ 2 }
- 3.map (字典)
- 与集合类似,字典也是一种**存储唯一值**的数据结构,但它是以键值对的形式来存储的。
- ES6中有字典,名为Map。
- 字典的常用操作:键值对的增删改查。
const m = new Map();
// 增
m.set('a', 'aa');
m.set('b', 'bb');
//查看字典m:
Map(2) {"a" => "aa", "b" => "bb"}
//获取字典的长度
console.log(m.size);//2
// 删
m.delete('b');
// m.clear();
// 改
m.set('a', 'aaa');
//查
m.get('a'); //'aaa'
//判断a是否存在字典中
m.has('a'); //true