【问题标题】:Fast String Collections in JavaJava 中的快速字符串集合
【发布时间】:2010-08-05 19:13:14
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 什么语言/平台?
  • 你大概有多少个字符串?数千?百万?数十亿?

标签: java string collections list maps


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您指的是字符串集合,我会使用 Java 的默认 HashSet。如果您需要更快的东西(就查找时间而言),您可以使用Trie。无论数据结构中的字符串数量如何,尝试都可以非常快速地查找(O(字符串长度)),并且可以非常紧凑。

    但是,请先使用HashSet 测试您的代码。有多达几百万个小字符串,我不认为它会很慢。

    【讨论】:

      【解决方案3】:

      一般来说,你不能真正拥有“快速收集”,因为每个数据结构都有自己的长处和短处。

      如果你想快速添加和迭代,ArrayLists 很好。如果你做了很多删除,你可能想要使用LinkedLists。如果你想快速查找,HashSets 很好,等等。

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 您好,我正在寻找优化 java 代码。该应用程序使用大量字符串集合,我的字符串大小固定
        • @niraj:你没有在你的问题中这么说。我将为您编辑您的问题,但您需要在问题中说明您所询问的语言和平台。
        【解决方案5】:

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

        虽然我自己从未使用过它,因为它在我的情况下不起作用,但我早在 2007 年就以它的概念为基础对其进行了调整以适应我自己的使用情况。它有很好的文档记录,至少您可以通过访问这些链接并阅读 Paul 的材料来了解很多关于字符串的知识。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-20
          • 2011-07-28
          • 2018-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          • 1970-01-01
          相关资源
          最近更新 更多