拉链法的理解

Posted geektcp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拉链法的理解相关的知识,希望对你有一定的参考价值。

原理

把具有相同散列地址的关键字(同义词)值放在同一个单链表中,称为同义词链表。
有m个散列地址就有m个链表,同时用指针数组T[0..m-1]存放各个链表的头指针,
凡是散列地址为i的记录都以结点方式插入到以T[i]为指针的单链表中。
T中各分量的初值应为空指针。

用途

主要用于解决key值冲突的问题

场景

  • HashMap就用了拉链法 HashMap的key是转化成了hashcode,这个值是可能重复的,但是为什么HashMap没有问题

  • 求集合交集

技术图片

有序集合11,3,5,7,8,9

有序集合22,3,4,5,6,7

两个指针指向首元素,比较元素的大小:

  • 如果相同,放入结果集,随意移动一个指针

  • 否则,移动值较小的一个指针,直到队尾

这种方法的好处是:

(1)集合中的元素最多被比较一次,时间复杂度为O(n)

(2)多个有序集合可以同时进行,这适用于多个分词的item求url_id交集

这个方法就像一条拉链的两边齿轮,一一比对就像拉链,故称为拉链法

以上是关于拉链法的理解的主要内容,如果未能解决你的问题,请参考以下文章

哈希表之拉链法

课堂练习——Hash 20162305

哈希表-开放寻址法-拉链法

哈希表(处理冲突时,拉链法)

哈希表(处理冲突时,拉链法)

hash算法与拉链法解决冲突