网站首页 > 技术文章 正文
哈希在java里用的非常多,可能你不经意之间就使用了它。比如我们经常使用的hashset,hashmap。哈希是一种数据结构,它提供了快速插入和查找,基于数组来实现的。
哈希化
哈希化将字母转换为ascii码或者其他编码,然后使用幂的连乘,比如abc,那么幂连乘则为97*27*27+98*27+27,由于乘出来的结果可能很大比如范围在1-9999999,因此需要进行压缩(取余),压缩到比如1-100之间。
压缩后的冲突问题
压缩后,可能出现冲突的问题。即2个不同的数,经过上述计算取余后,得到了相同的结果。如果不进行特别处理,就会使第二个计算值会将第一个值覆盖。
解决冲突问题
解决这个冲突问题,业界有2种方案。
方案一:开放地址法
如下图,一旦发现a和b算出的hash值冲突,那么在数组里找空位置,将数据填入,而不再使用哈希函数得到的数组下标。
方案二:链地址法
一旦发现两个数据计算的hash值一样,则会添加到对应的链表
以上就是哈希的一些原理性的知识。
猜你喜欢
- 2024-10-12 百度 面试题——Redis的对象类型与内部编码
- 2024-10-12 五分钟带你了解哈希算法究竟是什么!
- 2024-10-12 Redis哈希类型的使用场景 redis哈希槽的概念
- 2024-10-12 Redis哈希类型使用命令 redis 哈希操作
- 2024-10-12 对象存储服务器Minio(超详细) 对象存储服务适于哪些场景
- 2024-10-12 基于Vision Transformer的视频哈希检索识别虚假视频
- 2024-10-12 Redis 选择hash还是string 存储数据?
- 2024-10-12 特征工程:基于梯度提升模型的特征编码效果测试
- 2024-10-12 Redis 讲解系列之 Redis的五大数据类型和配置文件解读
- 2024-10-12 Redis 哈希表 VS Java HaspMap , 哪家强?
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)