У меня есть класс Matcher () следующим образом.Метод find принимает две строки: pattern (строка для поиска) и source (строка для поиска).Пример, если pattern = "abc" и source = "abc cda abc" передаются для поиска метода.Возвращает [0 4], то есть шаблон abc (точное совпадение) находится по индексу 0 и индексу 4 источника.Что бы вы ни передавали в шаблон, он будет рассматривать эту строку как один шаблон.Без изменения следующего класса Matcher, если я хочу найти более одного шаблона.Каков наилучший способ сделать это?Например, я хочу вызвать метод find из другого класса, и если у меня есть два шаблона, хранящихся в arraylist, я хочу сначала пропустить один шаблон и вернуть результат, а затем снова передать 2-й шаблон и вернуть результат за один раз.Я хочу прекратить обработку только после того, как оба шаблона или шаблоны в массиве будут найдены в источнике.Нужна твоя идея.
public class Matcher {
public static List<Integer> find(String pattern, String source) {
char[] x = pattern.toCharArray(), y = source.toCharArray();
int i, j, m = x.length, n = y.length;
List<Integer> result = new ArrayList<Integer>();
/* Searching */
for (j = 0; j <= n - m; ++j) {
for (i = 0; i < m && x[i] == y[i + j]; ++i)
;
if (i >= m)
result.add(j);
}
return result;
}
}