【问题标题】:Java - Most efficient structure for quick retrievalJava - 用于快速检索的最有效结构
【发布时间】:2015-06-20 02:04:32
【问题描述】:

我有一个非常简单的问题:我需要检查一个大的(150k)字符串列表是否包含某个字符串。顺序无关紧要,我只需要检查列表是否包含字符串。最有效的数据结构是什么?

【问题讨论】:

  • 列表是一种数据结构。您是在问什么是使用列表数据结构查找匹配字符串的最有效方法?
  • 如果你已经有列表 ---> Set set = new HashSet(list);
  • 我会考虑使用 Trie - Apache commons 有一个压缩的 Trie,它的性能很好 PatriciaTrie

标签: java string data-structures


【解决方案1】:

查看基于集合 (Hashset, enumset) 和哈希 (HashMap,linkedhash...,idnetityhash..) 的实现,它们对于 contains() 方法的速度复杂度为 O(1)。

this 是一个很好的链接

【讨论】:

    【解决方案2】:

    您需要一些使用散列函数来插入、检索和删除元素的结构。在这些操作中,它们通常具有理论上的 O(1) 复杂度。

    如果所有字符串都不同,那么您可以使用HashSet。如果您可以有重复的元素,那么您可以使用 HashMapString 映射到具有您拥有多少个元素的 Integer

    【讨论】:

      【解决方案3】:

      你需要使用一个 hashmap,它会给你 O(1) 的复杂度,只需将键和值对都存储为 hm.put(string,string);其中 hm 是您的哈希图。

      【讨论】:

        猜你喜欢
        • 2014-03-09
        • 1970-01-01
        • 2018-02-20
        • 2011-03-18
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        相关资源
        最近更新 更多