Java中的快速字符串集合

时间:2010-08-05 19:13:14

标签: java string collections list maps

我正在使用Java,我正在寻找在空间上进行优化且速度快的字符串集合(集合和列表)。我的字符串是固定大小的:3或5个字符长。

如果有任何最适合我的收藏库,请向我建议。我在考虑一些基于字典的集合。

感谢。

5 个答案:

答案 0 :(得分:3)

'基于词典的收藏'? HashMap是默认选择。它与O(1)一样快。 并且没有任何元素大小固定或没有。

答案 1 :(得分:3)

如果你的意思是字符串集合,我将使用Java的默认HashSet。如果你需要更快的东西(就查询时间而言),你可以使用Trie。尝试提供非常快速的查找(O(字符串的长度)),而不管数据结构中的字符串数量,并且可以非常紧凑。

但是,请先使用HashSet测试您的代码。有多达数百万个小尺寸琴弦,我觉得它不会很慢。

答案 2 :(得分:2)

一般来说,你无法真正拥有“快速收藏”,因为每个数据结构都有自己的优点和缺点。

如果你想快速添加和迭代,ArrayList是好的。如果你做了很多删除,你可能想要使用LinkedList。如果你想快速查找,HashSet是好的,等等。

如果您有并发访问权限,那么还有其他可能更适合的数据结构。有时组合多个数据结构也有帮助。

简而言之,您需要告诉我们您将使用数据结构的内容。

答案 3 :(得分:1)

如果我想要速度,我会使用C ++和STL以及固定为8字节的自定义字符串类。 8个字节很好地对齐并且是64位,因此可以在单个机器指令中进行比较。

使用STL,您可以选择使用std :: set,std :: map,unordered_set,std :: list或任何其他STL兼容结构。

答案 4 :(得分:0)

假设您正在谈论C或C ++,因为我无法想象有人会寻找字符串库的任何其他语言,我建议bstring使用Paul Hsieh

虽然我自己从来没有使用它,因为它在我的情况下不起作用,但是我在2007年将其概念作为基础改编自我自己的用法。它有很好的文档记录,至少你可以学习关于字符串的大量信息,只需要访问这些链接并阅读Paul的资料。

相关问题