hash算法以及解决冲突的方法
来源:互联网 发布:mac版的rar 解压软件 编辑:程序博客网 时间:2024/05/22 08:25
哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
int hash = hash(key.hashCode());int i = indexFor(hash, table.length);
hash表的优缺点
优点:我们知道数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。而hash表综合两者的特性,是一种寻址容易,插入删除也容易的数据结构。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级,效率极高。
缺点:
1.哈希表被基本填满时,性能下降得非常严重,所以程序虽必须要清楚表中将要存储多少数据(或者准备好定期地把数据转移到更大的哈希表中,这是个费时的过程)。
2.没办法顺序遍历hash表。
hash表的适用范围
快速查找,删除的基本数据结构,通常需要总数据量可以放入内存,在海量数据处理中有着广泛的应用。
解决hash冲突的方法:
开放定址法:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。没有空的位置就会进行扩容。
链地址法:
将所有关键字为同义词的记录存储在一个单链表中,一旦发生冲突,在当前位置给单链表增加结点就行。
缺点:查找时需要遍历单链表的性能损耗。
hashMap的优缺点:
遍历速度 插入删除速度 随机访问速度 备注
List 快 慢 快 必须之前知道数组元素个数,因为申请内存是连续长度明确的
Set 快 快 慢 比list多占一个指针的存储空间
HashMap 慢 快 快 适合海量数据,o(1)的随机访问速度,不是可遍历。线程不安全,安全的concurrentHashMap.
- hash算法以及解决冲突的方法
- Hash函数以及解决冲突的方法
- Hash函数以及解决冲突的方法
- Hash算法解决冲突的方法
- 解决hash冲突的方法
- 解决hash冲突的方法
- 解决hash冲突的方法
- 构造hash函数的方法、解决冲突的方法、常见hash算法
- HashMap解决hash冲突的方法
- 链表法HashMap解决hash冲突的方法
- HashMap解决hash冲突的方法
- HashMap解决hash冲突的方法
- 解决Hash冲突的几种方法
- HashMap解决hash冲突的方法
- HashMap解决Hash冲突的方法
- HashMap解决hash冲突的方法
- HashMap解决hash冲突的方法
- HashMap解决hash冲突的方法
- 疫苗:JAVA HASHMAP的死循环
- linux命令详解(cp命令)
- CodeForces 158E Phone Talks dp
- Python基础笔记
- HDFS上数据保存到Hbase运行报错:NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
- hash算法以及解决冲突的方法
- 在Activity之间传递简单数据
- centos7.3单机快速安装openstack
- GC算法实践(一) 内存分配篇
- Qt 图片缩放无锯齿处理
- 中文分词分析之PDF批量转化为文本
- 初学网络
- 最终实现混合app仿淘宝app自动识别淘口令 第一篇:mui混合开发获取原生剪切板内容
- Zynq 7000裸机的lwip 样例程序echo server 实验