什么时候使用散列数据结构?

When to use hash data structure?

我有一个对象集合(最多 500 个)。

我的条目将根据范围未知的 MAC 类键频繁查找。

现在,我对使用哪种数据结构和算法来有效查找值感到困惑。

对于这种情况,我不确定是选择平衡 BST (AVL) 还是哈希表。

500 个键对于构建哈希表来说太小了吗?

对我来说最好的方法是什么?

我读到了 computing hash might prove costly when the number of keys is less

附带说明一下,我还想知道考虑哈希表需要存在多少条目(最小)?

如果需要更多详细信息,请添加评论。

提前致谢。

以下是哈希结构的一些好处,

  1. 快速查找(理论上 O(1))
  2. 高效存储(有助于存储key-value)

虽然这些属性是有益的,但在某些情况下哈希 table 可能表现不佳。

  1. 如果您有大量对象,则需要更多存储空间 space(内存),因此可能会影响性能
  2. Hashing/key 算法应该不复杂。否则将花费更多时间在散列和查找密钥上。
  3. 键冲突应该最小化以避免在所有值中线性搜索单个键或键重复。

在您的情况下,如果哈希算法不是太复杂,那么您绝对可以使用哈希table,因为您只有 500 个对象。如果您有查找密集型工作流,​​那么 hashtable 可以节省很多时间。如果您的数据几乎是静态的,那么不必担心初始加载时间,因为您的查找时间会快得多。

您还可以查看另一个对较少值有效的 DS,例如哈希集、AVL 树、哈希树。对于 500 个对象,线性搜索和哈希搜索中的时间差异将是毫秒或微秒差异。因此你不会获得太多性能。改进。因此寻求简单性和可读性。