performance - 获取哈希表中键列表的时间复杂度?

标签 performance hash hashmap hashtable time-complexity

在很多语言中,您都可以从哈希表中获取键列表。就像java中 HashMap 的keySet()方法一样。如何从填充的 HashMap 中获得此值?哈希函数不是不可逆的吗?您是否也将 key 保存在单独的列表中?

那么,当我使用函数来获取填充哈希表中使用的键列表时,该函数的时间复杂度是多少?

对于我的特定问题,我碰巧知道哈希表中的最大条目数。这有帮助吗?

最佳答案

实际上每个哈希表除了值之外还存储键。无论如何,为了解决哈希冲突,这是必要的(在某些情况下,冲突被证明是不可能的,但这需要事先枚举完整的 key 集,因此它不适用于通用哈希表)。也就是说,哈希表 {"foo": 1, "bar": 2} 看起来不是这样的:

1
2

而是像这样

("foo", 1)
("bar", 2)

迭代键就是简单地迭代哈希表的底层结构。

关于performance - 获取哈希表中键列表的时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585460/

相关文章:

ruby - Ruby 字符串字典中的快速模糊/近似搜索

php - 拖放保存到 mysql 优化

performance - 用于 .NET 4.0 混合代码的免费 .NET Profiler

java - 使用 HashMap 获取重复出现的情况

hashmap - 在 struct impl 中访问 hashmap 字段值作为 &mut

android - 禁用 Activity 中的电源按钮

c# - 如何为自定义数据结构制作哈希码?

c - 如何在 C 代码中构建 Perl 哈希?

algorithm - 是否可以通过小块计算哈希?

Java 如何访问数组中保存的 HashMap 数据