用于存储由唯一的 8 位十六进制标识的对象的数据结构,用于快速插入和查找

Data structure to store objects identified by unique 8digit hexadecimals for fast insertion and lookup

我有一堆具有唯一 8 位十六进制标识符 ex[fd4786ac] 的对象,我需要快速构建和查找它们。删除不是优先事项。这些十六进制值当前存储为字符串。

考虑了 trie(或 trie 的某些变体)、跳跃列表和散列的某些变体 table。在 AVL 树上使用跳过列表会更好,因为这些字符串很可能是连续的但不能保证并且树会经常重新平衡。如果其他数据结构更适合我的需要,我对它们持开放态度。

您的 8 位十六进制标识符表示一个 4 字节(32 位)整数,因此您可以将其用作具有 2^32 个条目的(相当大的)数组的索引。 如果数组包含指针,这将花费 64GB。

很可能太多了,无法将其保存在 RAM 中。

因此,如果元素数量低于 2^32 个数量级,请使用 Hash-Map 或排序列表(访问 O(logn) )。

一个不错的选择是将您的密钥转换为 32 位整数,然后使用散列 table。

如果您只想为此用例编写自己的代码,那么: