我需要将数百万个具有公共(public)前缀(它们不对应于文件系统路径)的字符串存储在内存中类似 Set 的结构中,并查询 Collection 以查看路径是否存在。
例如
/path
/path/1
/path/2
/path/1/a
/path/1/b
我想尽可能有效地存储它们(它们将在内存中),因为所有涉及的字符串都有许多公共(public)前缀,Trie 是一个合理的候选者吗?
我正在寻找 Java 中合适的数据结构的实现建议。
最佳答案
A Trie看起来像你需要的结构。同样类似的结构是Radix Tries ,与尝试不同,它使用字符序列来标记边缘。在简单的尝试中,边缘用单个字符标记,我相信它们在字符串共享很多前缀的情况下表现得更好。
另请参阅...
关于java - 具有公共(public)前缀的字符串的空间高效集合 - Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595780/