Если вы абсолютно хотите скрыть циклы в реализации, вы можете сделать что-то вроде этого:
public String repeatSeparator(String word, String separator, int count) {
return IntStream.range(0, count)
.mapToObj(i -> word)
.collect(Collectors.joining(separator));
}
Приведенный выше код генерирует числа от 0 до count-1, заменяет каждое число заданным word и, наконец, объединяет их с заданным разделителем.
Обратите внимание, что здесь все еще используются циклы, они просто скрыты внутри потоков. Что еще хуже, это решение почти наверняка менее эффективно, чем наивный StringBuilder + для решения.
Изменить: (потенциально) более простая версия той же идеи:
public String repeatSeparator(String word, String separator, int count) {
return Stream.generate(() -> word)
.limit(count)
.collect(Collectors.joining(separator));
}
Создание бесконечного поток слова, ограничьте его заданным числом, затем объедините их с помощью разделителя.