У меня есть вопрос о эффективном сравнении двух массивов строк. Я хочу знать, какая строка stArr1 содержит любую строку stArr2. Если да, я хочу напечатать строку, в которой я ее нашел, и индекс строки в stArr1.
То, что я получил до сих пор, - это простой способ сравнения двух строк:
public class Main {
public static void main(String[] args) {
String[] stArr1 = {"I am testing", "hi", "bye bye"};
String[] stArr2 = {"hello", "bye", "test"};
int matches = 0;
for (int i = 0; i < stArr1.length; i++) {
for (int j = 0; j < stArr2.length; j++) {
if (stArr1[i].contains(stArr2[j])) {
System.out.println(stArr1[i] + "found at index " i);
}
}
}
}
}
Таким образом, вывод должен быть следующим: я проверяю, найденный по индексу 0, пока, пока, по индексу 2.
Кто-нибудь знает более эффективный способ? Я немного попробовал с потоками и уверен, что есть лучшее решение.