java - 具有公共(public)前缀的字符串的空间高效集合 - Java 实现

标签 java data-structures collections trie

我需要将数百万个具有公共(public)前缀(它们不对应于文件系统路径)的字符串存储在内存中类似 Set 的结构中,并查询 Collection 以查看路径是否存在。

例如

/path
/path/1
/path/2
/path/1/a
/path/1/b

我想尽可能有效地存储它们(它们将在内存中),因为所有涉及的字符串都有许多公共(public)前缀,Trie 是一个合理的候选者吗?

我正在寻找 Java 中合适的数据结构的实现建议

最佳答案

A Trie看起来像你需要的结构。同样类似的结构是Radix Tries ,与尝试不同,它使用字符序列来标记边缘。在简单的尝试中,边缘用单个字符标记,我相信它们在字符串共享很多前缀的情况下表现得更好。

另请参阅...

http://code.google.com/p/trie/

http://code.google.com/p/radixtree/

关于java - 具有公共(public)前缀的字符串的空间高效集合 - Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595780/

相关文章:

java - java中的解析器JSON文件JSONARRAY和JSONOBJECT

java - HDIV + Spring MVC - 总是出现未经授权的访问错误 HDIV_PARAMETER_DOES_NOT_EXIST

java - Google 搜索结果计数为 10000 个术语

java - 编程难题 : how to count number of bacteria that are alive?

java - 将参数数组转换为 HashMap

java - 从 VPN token /智能卡读取证书

.net - 如何让我的简单 .NET LRU 缓存更快?

python - 如何在 python 中记录结构?

java - Collection.toArray() java.lang.ClassCastException

java - LinkedHashMap 与 HashMap 中的删除