【问题标题】:Performance: Fastest way to check if a List<String> contains a specific String性能:检查 List<String> 是否包含特定字符串的最快方法
【发布时间】:2016-05-05 12:01:16
【问题描述】:

在我正在编写的程序中,我必须检查一个 List(实际上我可以根据需要替换 Collection 的类型)是否包含特定的 String。

这是最快的方法吗?

private boolean containsItem(List<String> list, String path) {
        for (String s : list) {
            if (s.equals(path)) {
                return true;
            }
        }
        return false;
}

我只要求性能,因为此操作可能会连续发生几千次。

【问题讨论】:

  • 使用 HashSet 来提高性能,而不是你的方法,使用 set.contains(path)
  • 更不用说:list.contains(path) 会比这段代码更适合。
  • 并包含设置方法。
  • @Eran:嗯,HashSet 将提高 检索 性能。但自然会在插入性能方面付出代价。
  • @T.J.Crowder 好吧,鉴于 OP 说他想搜索a couple of thousand times in a row,我认为将数据存储在HashSet 中会更有效。当然,如果插入比检索更频繁,那可能不是真的。

标签: java performance iteration


【解决方案1】:

如果您列出的是 const(不可修改或您在构造后永远不会更改它)。您可以将该列表构建为 Trie 树Trie,并使用该树执行搜索。速度快,可以找词(不仅提取相等)

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 2016-09-16
    • 2013-03-14
    • 2012-12-27
    • 2014-10-14
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多