【发布时间】:2016-03-15 04:06:39
【问题描述】:
我了解哈希表旨在在存储大量数据时轻松排序和检索数据。但是,在检索特定数据时,如果由于碰撞而将它们存储在其他位置,他们如何检索呢?
假设有 10 个索引,数据 A 存储在索引 3 中,数据 E 发生冲突,因为数据 A 已经存储在索引 3 中,而冲突预防将其放在索引 7 中。当需要检索数据 E 时,它如何检索 E 而不是使用第一个哈希函数并检索 A 呢?
对不起,如果这是一个愚蠢的问题。我对编程还是有点陌生。
【问题讨论】:
-
对于 hastable,每个桶都有一个值列表。哈希函数到头元素,然后迭代列表。
-
回到大学(1970 年代后期)我了解了哈希表,如果第一个桶被占用,算法会在其中找到另一个桶。我从未见过它们被使用过。链接(每个桶都有一组值,而不仅仅是一个,如果有“冲突”,你只需向集合中添加一个新值)是做事的标准方式,你必须有一个很好的理由以其他方式进行。
-
哈希表与排序无关。
-
我知道它们没有排序。我的意思是说它们以系统的方式放置在哈希表中。所以在某种程度上它们是被排序的,但不是通过编程中排序的字面定义。