0

给定一个无序列表List<String>,我需要找出是否存在String与提供的字符串匹配的一个。

所以,我循环

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

WhereUtils.keysMatch检查是否可以发生适当的匹配。

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

4

2 回答 2

1

不。在最坏的情况下,您查看的最后一个元素是第一个匹配的元素,因此您必须查看所有元素。

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

于 2012-09-12T13:35:34.877 回答
1

您可以使用 Guava 的Iterables.any方法和静态 Predicates 类以优雅的方式做到这一点

像这样:

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

于 2012-09-12T13:33:45.727 回答