一种快速(呃)的方法来查找与列表中的模式匹配的内容

时间:2012-09-12 13:27:52

标签: java

鉴于List<String>的无序列表,我需要查找是否存在与提供的字符串匹配的String

所以,我循环

    for (String k : keys) {
        if (Utils.keysMatch(k, anotherKey)) {
            result = true;
            break;
        }
    }

Utils.keysMatch检查是否可以进行匹配。

如果没有完整的迭代,可以做同样的事吗?请注意k可能是正则表达式。

2 个答案:

答案 0 :(得分:1)

你可以用Guava的Iterables.any方法和静态谓词类

以优雅的方式做到这一点 像这样:

return Iterables.any(keys, Predicates.containsPattern(k);

答案 1 :(得分:1)

没有。在最坏的情况下,你看到的最后一个元素是匹配的第一个元素,所以你必须全部查看它们。

当然,如果您可以预先计算出合适的数据结构,那么您可能会获得更快的结果。