像HashMap这样的数据结构会根据密钥的相等性来检索数据。
如果我想根据比较结果检索数据,我应该使用什么数据结构?
答案 0 :(得分:1)
通常,您应该使用平衡二叉树。在C ++中,您可以通过std::map
获得一个。在Java中,它被称为TreeMap。遗憾的是,Python在标准库中没有任何内容。
对于不寻常的情况,其他结构(如Splay Tree)甚至是简单的链接列表可能会更好。这取决于你的需求。
答案 1 :(得分:1)
正如已经回答的那样,平衡的树很好。
您没有提及有关插入速度或内存要求的任何信息。排序的数组也可以非常快速地进行搜索(二进制搜索),但插入速度很慢。
我假设正在讨论使用字符串进行索引。最快的查找是一个字典(在我的基准测试中,速度是C ++地图的两倍),但存储量很大。
使用字典,每个节点都有一个指针数组(指向节点):每个节点都有一个可能的字符串字符。要插入,您遍历字符串中的每个字符,并为该字符添加一个节点(如果尚不存在),遍历该节点并继续,直到您在字符串的末尾。然后,您将数据存储在该节点上。当您拥有部分完整的密钥时,此数据结构还可以为您提供构建单词完成列表的选项。