【发布时间】:2014-05-22 00:09:14
【问题描述】:
我正在比较两个字符串列表以查找可能的匹配项。示例:
public class Tester {
public static void main(String[] args) {
List<String> test = new ArrayList<String>();
List<String> test2 = new ArrayList<String>();
test.add("3H0875AAAA0012");
test.add("3H0875AABB0018");
test.add("3H0875AAAC0010");
test2.add("3H0875AA");
for(String s2: test2){
for (String s: test){
if (s.matches(".*" + s2 + ".*")){
System.out.println("Match");
}
}
}
}
}
基本上对于test2 中的每个字符串,我想看看test 中是否有任何字符串完全或部分包含test2。上述代码的输出应该是:
Match
Match
Match
但是,在我的真实情况下,我在测试中有大约 225K 字符串,在 test2 中有大约 5K 字符串。这个比较的过程太长了,想看看是否可以优化比较。分析 test2 中的前 1.5K 项大约需要 10 分钟。因此,完成比较至少需要 30 到 40 分钟。
提前致谢
【问题讨论】:
标签: java regex optimization