![]() |
1
1
哈希表在概念上类似于链表的数组(表)( 水桶 在表格中)。不同之处在于管理和访问该数组的方式:使用函数生成用于计算数组索引的数字。 一旦将两个元素放在同一个bucket中(相同的计算值,即碰撞),那么问题就变成了在列表中进行搜索。列表中的元素数有望低于哈希表中的元素总数(意味着其他bucket中存在其他元素)。 但是,您跳过了该段中的重要介绍:
Linear probing 是哈希表的另一种实现,其中不使用任何列表(链)进行冲突。相反,您只需在阵列中找到最近的可用点,从预期位置开始,然后向前。数组填充的越多,发现下一个位置也在使用的机会就越大,因此只需继续搜索即可。位置由使用 散列为相同或冲突值的项 ,尽管您永远不会(也不在乎)这两种情况是哪一种,除非您在那里明确看到现有元素的哈希。 This CppCon presentation video 对哈希表进行了很好的介绍和深入分析。 |
![]() |
sana ch · 将数据从hashmap获取到highcharts 6 年前 |
![]() |
Dennis Lipponen · 循环HashMap[重复] 6 年前 |
![]() |
Brian · 在LinkedHashMap中的最后一个对象中访问方法 6 年前 |
![]() |
fawad · 使用Pojo作为映射中的键无法找到键Java 8 6 年前 |
![]() |
rb612 · 哈希表在相同或冲突值上是如何线性的? 6 年前 |