哈希冲突的处理:链地址法(Seperate Chaining)

 

哈希表:

Java 哈希冲突的处理

生成的索引,可能是负整数,需要去掉符号“-”。和31个1进行按位与操作。

Java 哈希冲突的处理

接着按照索引位置存储进数组:

Java 哈希冲突的处理

如果再来个K3进行哈希转换成的索引还是1呢?依然放进1位置里面:

Java 哈希冲突的处理

此时的k2和k3就形成了链表的形式。

查找表也可以使用平衡树结构:

Java 哈希冲突的处理

例如计算一个元素的哈希值所对应的索引,接着从哈希表中找到该索引的TreeMap,接着讲元素插入TreeMap接口。

Java 哈希冲突的处理

在Java8之前,每一个位置对应一个链表

Java8开始,当哈希冲突达到一定程度后,就将每一个位置从链表转成红黑树。

温馨提示

关注我的公众号【Java剑主】,学习更多有深度的技术文章。本博客不在记录原创博文,请移步公众号获取最新内容。

修道注重根基,熟透原理方能看透事物本质,编程亦如此! Java修炼之道,道心坚不移!踏剑寻梦,不忘初心!

Java 哈希冲突的处理

相关文章: