Мне нужно реализовать способ поиска подстроки (игл) в списке строки (haystack) с помощью Java.
В частности, мое приложение имеет список профилей пользователей. Если я наберу несколько букв, например, "Ja", а затем выполните поиск, тогда появятся все пользователи, чье имя содержит "ja". Например, результатом могут быть "Джек", "Джексон", "Джейсон", "Диажаф".
В Java, как я знаю, существует 3 встроенных метода для поиска подстроки в строке.
-
string.contains()
-
String.indexOf()
-
регулярное выражение. это что-то вроде string.matches( "ja" ))
Мой вопрос: Каковы временные ряды каждого метода выше? который является самым быстрым или наиболее эффективным или наиболее популярным способом проверить, содержит ли строка строки заданную подстроку.
Я знаю, что существуют некоторые алгоритмы, которые делают то же самое, например алгоритм поиска строк Бойера-Мура, алгоритм Кнута-Морриса-Пратта и т.д. Я не хочу их использовать, потому что у меня есть небольшой список строк, и я думаю, что использование их для меня сейчас слишком велико. Кроме того, я должен ввести много дополнительного кода для такого алгоритма, который не является встроенным. Если вы считаете, что мои мысли неверны, пожалуйста, не стесняйтесь меня исправлять.