Я пытаюсь улучшить производительность Java-функции, которая у меня есть, которая определяет, содержит ли данная строка поискa > 0 строк в коллекции. Это может показаться преждевременной оптимизацией, но функция называется LOT, поэтому любая скорость будет очень полезной.
В настоящее время код выглядит следующим образом:
public static boolean containsAny(String searchString, List<String> searchCollection) {
int size = searchCollection.size();
for (int i = 0; i < size; i++) {
String stringInCollection = searchCollection.get(i);
if (!Util.isNullOrEmpty(stringInCollection)) {
// This is a performance optimization of contains.
if (searchString.indexOf(stringInCollection, 0) > -1) {
return true;
}
}
}
return false;
}
В списке обычно содержится около 30 элементов, и одна и та же коллекция многократно используется между каждым вызовом.
Вышеприведенный код представляет собой довольно простой линейный поиск. Я не думаю, что это может быть значительно улучшено, если мы не изменим структуру данных, чтобы сделать ее лучше, чем O (n). Существуют ли какие-либо структуры данных, которые позволили бы мне это сделать?