我有一堆具有唯一8位十六进制标识符ex [fd4786ac]的对象,我需要对其进行构造和快速查找。删除不是优先事项。这些十六进制值当前存储为字符串。
考虑了特里(或特里的某些变体),跳过列表和哈希表的某些变体。在AVL树上使用跳过列表将是更好的选择,因为这些字符串很可能是顺序的,但不能保证,并且树重新平衡经常会发生。如果其他数据结构更适合我的需求,我将如何开放?
答案 0 :(得分:0)
您的8位十六进制标识符表示4字节(32位)整数,因此您可以将其用作具有2 ^ 32个条目的(很大)数组的索引。 如果数组包含指针,则将花费64GB。
很可能无法将其保存在RAM中。
因此,如果元素的数量在2 ^ 32以下的数量级,请使用Hash-Map或排序的ist(访问O(logn))。
答案 1 :(得分:0)
一个不错的选择是将您的密钥转换为32位整数,然后使用哈希表。
如果您只想为此用例编写自己的内容,则: