【问题标题】:In hash tables, how can iteration over keys be implemented?在哈希表中,如何实现对键的迭代?
【发布时间】:2020-12-13 04:30:21
【问题描述】:

基本上,我想知道当我运行这样的事情时会发生什么或可能会发生什么:

for key in some_hash_map.keys():
    print(key)

仅仅是使用反向哈希函数吗?

【问题讨论】:

  • hash (set or map) 是桶的集合(被占用或未被占用)。遍历键意味着遍历占用的存储桶

标签: algorithm hash hashmap


【解决方案1】:

一个典型的哈希表可以实现为一个桶数组,每个桶都有一个条目的链表。

哈希查找通过运行哈希函数找到正确的存储桶,然后搜索存储桶。

遍历键是通过遍历桶来实现的,依次搜索每个列表。

如果存储桶太多,则会浪费内存并且迭代速度很慢。太少了,链表会变慢。但是我们可以动态调整桶的数量,以固定每个键的开销。

如果散列函数不能很好地工作,那么散列将执行得非常糟糕。

【讨论】:

  • 谢谢!所以,我猜,键值对存储在这些链表中的 2 元组中。
  • @m_ocean 这是实现它的一种方式。键/指针值对也很常见。
猜你喜欢
  • 2017-09-04
  • 2023-04-07
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2016-05-17
  • 2013-08-21
相关资源
最近更新 更多