两个不同的Key,得到相同的hash值,而一个下标只能存放一个Key,这就产生了哈希冲突(这里的Key和hashMap原理key-value中的key是不同的,key-value是一对值,而Key是独立的一个值),冲突后Key就必须通过别的方法找到属于自己的存放位置。 开放定址法 开放定址法 根据增 ...
分类:
其他好文 时间:
2019-06-22 01:16:43
阅读次数:
110
1.哈希表是如何put一个数据的? 2.JDK 1.7 hash算法 和 JDK 1.8的哈希算法源码 key.hashcode ^ h >>> 16 高16位和低16位做异或操作增加随机性,减少哈希冲突 3.indexFor 算法源码 h & (length -1) 4.哈希冲突是什么,如何解决哈 ...
分类:
其他好文 时间:
2019-06-19 20:30:21
阅读次数:
117
比如:我是中国人,和我是日本人,经过哈希转换后,输出的散列值都为“我是人”这就叫哈希冲突。1、特征:hash值的计算过程是依据这个值的一些特征计算的,这就要求被hash的值必须固定,因此被hash的值必须是不可变的。|||数字,字符串和元祖都是不可变类型|||2、用途:文件签名,MD5加密,密码验证。比如登录网站的账号密码时,用户输入的账号密码时明文,但是后台数据库保存的是经过hash后的密文,此
分类:
编程语言 时间:
2019-06-10 12:05:31
阅读次数:
144
数论ex 数学学得太差了补补知识点or复习 Miller Rabin 和 Pollard Rho Miller Rabin 前置知识: 1. 费马小定理 $$ a^{p 1}\equiv 1\pmod p,p \ is \ prime $$ 2. 二次探测(mod奇素数下1的二次剩余) $$ x^2 ...
分类:
其他好文 时间:
2019-04-28 21:59:39
阅读次数:
180
跳房子散列 1、定义 前言: ? 线性探测法是在散列位置的相邻点开始探测,这会引起很多问题,于是各种优化版本例如平方探测、双散列等被提出来改进其中的聚集问题。但是探测相邻位置和第二次散列相比,显然探测相邻位置更有优势,所以线性探测仍然是实用的,甚至是最佳选择。 1.1 描述 ? 跳房子散列的思路: ...
分类:
其他好文 时间:
2019-03-20 23:32:32
阅读次数:
393
Java数据结构-HashMap 1. HashMap数据结构 没有哈希冲突时,为数组,支持动态扩容 哈希冲突时,分为两种情况: 1. 当冲突长度小于8或数组长度小于64(MIN_TREEIFY_CAPACITY默认值为64)时,为数组+链表(Node) 2. 当冲突长度大于8时,为数组+红黑树/链 ...
分类:
编程语言 时间:
2019-03-18 01:39:51
阅读次数:
211
哈希冲突回避算法有哪几种, 分别有什么特点 https://blog.csdn.net/seulzz/article/details/77163878 python字符串驻留机制: 仅包含下划线(_)、字母和数字的字符串会启用字符串驻留机制驻留机制 ...
分类:
其他好文 时间:
2019-02-27 20:21:22
阅读次数:
149
HashMap是由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突存在的;在JDK8后,当链表长度大于阈值(默认为8)时,链表转化为红黑树,以减少搜索时间。 红黑树简述: https://juejin.im/post/5a27c6946fb9a04509096248#com ...
分类:
其他好文 时间:
2019-02-24 00:47:51
阅读次数:
278
哈希表:是一种key-value存储数据的结构 使用哈希表的两个步骤: 1.无序数组:将键值key转化为对应的索引(f(key)),根据索引来寻找对应的值(value) 2.解决哈希冲突:当key值不同,但f(key)相同 哈希函数:将key映射到对应的索引的映射函数f(x)即为哈希函数。 1.键为 ...
分类:
编程语言 时间:
2019-01-18 17:25:11
阅读次数:
154
实现方法 一、开放地址法 线性探测原始下标为x,线性探测就是x+1,x+2,x+3当数据项占哈希表长的一半或三分之二时,性能最好 二次探测原始下标为x,二次探测就是x+1,x+4,x+9,即x+1,x+2,x+3要求哈希表的容量是一个质数 再哈希法方法是把关键字用不同的哈希函数再做一次哈希化,用这个 ...
分类:
其他好文 时间:
2019-01-06 20:05:40
阅读次数:
180