我正在比较两个字符串列表,以查找可能的匹配项。例:
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全部或部分包含的字符串。以上代码的输出应为:
test2
test
Match Match Match
但是,在实际情况下,我在测试中有大约225K字符串,而在test2中有大约5K字符串。此比较花费的时间太长,希望查看是否有可能优化比较。分析test2中的前1.5K项大约需要10分钟。因此,至少需要30到40分钟才能完成比较。
提前致谢
我认为您不应该为此使用 正则表达式 :我认为,在性能方面,String#contains(在此链接指向其javadoc条目)可以为您带来更好的结果;)
String#contains
例如,您的代码可能是:
for(final String s2: test2){ for (final String s: test){ if(s.contains(s2)) { System.out.println("Match"); } } }