我需要实现一种使用Java在字符串列表(干草堆)中搜索子串(针)的方法。什么是Java中最快的子串搜索方法
更具体地说,我的应用程序有一个用户配置文件的列表。如果我键入一些字母,例如“Ja”,然后搜索,那么名称中包含“ja”的所有用户都应显示出来。例如,结果可能是“杰克”,“杰克逊”,“杰森”,“迪亚夫”。
在Java中,据我所知,有3种内置方法可以查看字符串中的搜索子字符串。
string.contains()
string.indexOf()
正则表达式。它是像string.matches( “JA”))
我的问题是:是,以上每种方法的运行时间?哪一个是检查字符串列表是否包含给定子字符串的最快或最有效或最流行的方式。
我知道存在一些相同的算法,比如Boyer-Moore字符串搜索算法,Knuth-Morris-Pratt算法等等。我不想使用它们,因为我只是有一小串字符串,我认为现在使用它们对我来说有点矫枉过正。此外,我必须为这种非内置算法输入大量额外的编码。 如果您认为我的想法不正确,请随时纠正我。
为什么你认为子字符串搜索是性能问题? – chrylis
好一个在这里http://stackoverflow.com/questions/5296268/fastest-way-to-check-a-string-contain-another-substring-in-javascript – Krishna
它不应该是复杂的设置一些简单的性能测试你自己! – FrankPl