Один из подходов заключается в использовании потоков:
return Stream.of(a, b, c, d, e)
.filter(str -> !StringUtils.isEmpty(str))
.map(str -> str + "\n")
.collect(Collectors.joining());
Сначала отфильтровываются все пустые строки, затем добавляется \n
к каждому элементу и, наконец, объединяются все фрагменты вstring.
Обратите внимание, что вместо методов map
и collect
вы также можете использовать collect(Collectors.joining("\n"))
(см. ответ Дэдпула), но затем обратите внимание, что за последним элементом не следует новая строка. Поэтому вам нужно добавить его к результату самостоятельно.
Также обратите внимание, что, как сказал YCF_L в комментариях, вы можете заменить filter(str -> !StringUtils.isEmpty(str))
ссылкой на метод .filter(StringUtils::isNotEmpty)
, используя тот факт, что StringUtils
класс предлагает обратную isEmpty
.