一:hash表 也叫散列表,以key-value的形式存储数据,就是将需要存储的关键码值通过hash函数映射到表中的位置,可加快访问速度。 二:hash冲突 如果两个相同的关键码值通过hash函数映射到了表中的相同位置,则产生了“碰撞”及hash冲突。解决冲突的方式有多种,可根据实际情况选择。 三: ...
分类:
其他好文 时间:
2017-03-23 11:34:28
阅读次数:
192
虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中 ...
分类:
其他好文 时间:
2017-02-15 16:14:31
阅读次数:
211
hashMap 怎么说呢。 我的理解是 外表是一个set 数组,无序不重复 。 每个set元素是一个bean ,存着一对key value 看看代码吧 打印的结果是: 可以看到, 虽然张三是先插进去的, 但是确在后面打印出来,说明这个数组不是有序的, 不是list; 虽然aa 的 hashcode= ...
分类:
其他好文 时间:
2017-02-10 13:18:06
阅读次数:
168
转自:BloomFilter——大规模数据处理利器,有改动 总结: BloomFilter用位向量(节省内存占用)来标记元素是否出现过,每个元素经hash得到在位向量中的位置,为了降低hash冲突的概率,同时用n个hash函数,因此每个元素有n个hash值。若一个元素的n个hash函数所指定的位的值 ...
分类:
其他好文 时间:
2016-12-26 23:56:55
阅读次数:
512
HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 ...
分类:
其他好文 时间:
2016-11-05 09:41:05
阅读次数:
236
本文转自:http://blog.csdn.net/yang_yulei/article/details/46371975 基数树 对于长整型数据的映射,如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题。radix树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射。借助于Ra ...
分类:
其他好文 时间:
2016-10-17 07:21:47
阅读次数:
169
参考文献: 1、Cuckoo Filter hash算法 2、cuckoo hash 用途: Cuckoo Hash(布谷鸟散列)。问了解决哈希冲突的问题而提出,利用较少的计算换取较大的空间。占用空间少,查询速度快。经常应用于Bloom Filter和内存管理中。之所以起这个名字是因为布谷鸟生性贪婪 ...
分类:
其他好文 时间:
2016-05-02 11:49:45
阅读次数:
432
源码分析 HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法 ...
分类:
其他好文 时间:
2016-04-10 00:59:42
阅读次数:
465
大家都知道,HashMap采用链表解决Hash冲突,具体的HashMap的分析可以参考一下http://zhangshixi.iteye.com/blog/672697 的分析。因为是链表结构,那么就很容易形成闭合的链路,这样在循环的时候就会产生死循环。但是,我好奇的是,这种闭合的链路是如何形成的呢
分类:
其他好文 时间:
2016-02-08 21:23:48
阅读次数:
312
1.HashMap的resize(rehash): 当HashMap中的元素越来越多的时候,hash冲突的几率也就越来越高,因为数组的长度是固定的。所以为了提高查询的效率,就要对HashMap的数组进行扩容,数组扩容这个操作也会出现在ArrayList中,这是一个常用的操作,而在HashMap数组扩
分类:
其他好文 时间:
2016-01-30 17:37:13
阅读次数:
126