Java 查找与列表中的模式匹配的内容的快速(er)方法

Java 查找与列表中的模式匹配的内容的快速(er)方法,java,Java,给定一个无序的列表,我需要查找是否存在与提供的字符串匹配的字符串 所以,我循环 for (String k : keys) { if (Utils.keysMatch(k, anotherKey)) { result = true; break; } } 其中Utils.keysMatch检查是否可以进行适当的匹配 不经过完整的迭代也能做到这一点吗?请注意,k可能是一个正则表达式。您可以使用Guav

给定一个无序的
列表
,我需要查找是否存在与提供的字符串匹配的
字符串

所以,我循环

    for (String k : keys) {
        if (Utils.keysMatch(k, anotherKey)) {
            result = true;
            break;
        }
    }
其中
Utils.keysMatch
检查是否可以进行适当的匹配


不经过完整的迭代也能做到这一点吗?请注意,
k
可能是一个正则表达式。

您可以使用Guava的方法和静态谓词类以优雅的方式做到这一点

像这样:


返回Iterables.any(键、谓词.containsPattern(k);

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


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

这个列表是否特别大?@Bill大约有200-250万个键。你能提供一些问题的背景吗?对于你所描述的,几乎没有更快的方法。但是如果你描述这个问题,可能会有一个更好的数据结构。y你只搜索列表一次吗?