鉴于List<String>
的无序列表,我需要查找是否存在与提供的字符串匹配的String
。
所以,我循环
for (String k : keys) {
if (Utils.keysMatch(k, anotherKey)) {
result = true;
break;
}
}
Utils.keysMatch
检查是否可以进行匹配。
如果没有完整的迭代,可以做同样的事吗?请注意k
可能是正则表达式。
答案 0 :(得分:1)
你可以用Guava的Iterables.any方法和静态谓词类
以优雅的方式做到这一点 像这样:
return Iterables.any(keys, Predicates.containsPattern(k);
答案 1 :(得分:1)
没有。在最坏的情况下,你看到的最后一个元素是匹配的第一个元素,所以你必须全部查看它们。
当然,如果您可以预先计算出合适的数据结构,那么您可能会获得更快的结果。