具有公共前缀的字符串的空间有效集合 - Java实现
我需要在内存中的Set like结构中存储数百万个具有公共前缀的字符串(它们不对应于文件系统路径),并查询Collection以查看路径是否存在。
例如
/path
/path/1
/path/2
/path/1/a
/path/1/b
我想尽可能有效地存储它们(它们将在内存中),因为对于所有涉及的字符串,将会有许多共同的前缀,Trie是否是合理的候选者?
我正在寻找在Java中实现合适的数据结构的建议。
没有找到相关结果
已邀请:
6 个回复
峨躬坎抬焚
炉挤仙挟
弓萍功
并完成它。 如果我没有很多内存,并且目录结构遵循80:20规则(或者更可能是95:5),我会想到一个
。此映射的关键是具有“合理”重复量的最长前导路径字符串,值将是剩余的字符串。您将使用逐渐缩短的前导组件探测此地图,直到找到匹配项,然后探测其余部分的集合。 这留下了“合理”重复的问题。这是重复的数量,其中两个数据结构的开销通过减少重复来克服。例如,
可能有效(因为它包含数千个文件,每个文件保存9个字符或18个字节),但
可能不会(至少在我的系统上,它只保存一个文件)。
寇剩
抵舵
死搭胯