今天学习大名鼎鼎的Hash Map。
哈希表概念
哈希表又叫散列表。和二叉树、链表类似,哈希表就是一种数据结构,设计出来用于存放数据。
构造
哈希表是一个指针数组,存有很多个keys,每个关键字都有对应的values,可以想象成一个字典。
数组和链表的优缺点:
数组寻址容易,插入和删除元素难;链表寻址困难,插入和删除元素容易。
哈希表结合数组和链表,keys用array实现,每个array的值会指向个链表。
但Array里的元素时有顺序的,HashMap没有;且Array的overhead比较小,HashMap实现复杂。
为什么设计哈希表?
在哈希表中增删改查一个特定的元素,只需要平均O(1) 的时间复杂度,而搜索二叉树的查找速度是O(logN)。
根据设定的哈希函数以及处理冲突的方法将查找表中各数据元素存储在一段有限的连续空间中,就能得到哈希表。
查找
在一般的查找过程中,时间主要用于关键字值之间的比较。
是否可以不通过关键字值之间的比较就得到需要的记录?
在待查记录的关键字值与它的存储位置之间建立一个确定的对应关系。
在哈希表中查找元素
与将元素插