我有一大组固定长度的字节数组,例如:。
type Fixed [64]byte
set := make([]Fixed, 10240)
大多数条目都有不同的5-7字节前缀。
我如何能够实现基于给定前缀查找set
元素的有效方法? e.g:
set.Find([7]byte{ /*...*/ }) == /* no hit || single hit || multiple hit */
答案 0 :(得分:1)
您似乎需要trie。
您可以将您的设置存储为trie并给出一个前缀,然后一直向下并进入节点。然后,您只需遍历以此节点为根的子树,即可获取所有项目。
答案 1 :(得分:0)
如上所述,特里可能对你有好处。 你也可以使用哈希表,密钥将是前7-8个字节(可以使用长的),访问时间是O(1),我认为更容易实现。