Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Collectors.joining()

Сборщик, который склеивает строки потока в одну.

Доступно с: Java 8

Синтаксис

static Collector<CharSequence, ?, String> joining()
static Collector<CharSequence, ?, String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

Параметры

ПараметрТипОписание
delimiterCharSequenceНеобязательный разделитель.
prefixCharSequenceНеобязательная строка в начале.
suffixCharSequenceНеобязательная строка в конце.

Возвращаемое значение

Collector<CharSequence, ?, String>Сборщик в одну строку.

Примеры

Разделитель, начало и конец:

void main() {
    List<String> tags = List.of("java", "streams", "api");
    IO.println(tags.stream().collect(Collectors.joining()));
    IO.println(tags.stream().collect(Collectors.joining(", ")));
    IO.println(tags.stream().collect(Collectors.joining(" | ", "[", "]")));
}

Результат:

javastreamsapi
java, streams, api
[java | streams | api]

Числа нужно сначала превратить в строки:

void main() {
    String csv = Stream.of(3, 1, 4).map(String::valueOf).collect(Collectors.joining(","));
    IO.println(csv);
}

Результат:

3,1,4

Примечания

Работает только с потоком строк (CharSequence), поэтому числа и объекты сначала преобразуют через map(String::valueOf). Для готовой коллекции строк без потока подходит String.join(", ", list).

См. также

  • Stream.collect() — Собирает элементы потока в коллекцию, строку или другую структуру.
  • Stream.map() — Преобразует каждый элемент потока.

Вопросы и ответы по теме

В учебнике

  • Коллекторы — Метод collect и класс Collectors — toList, toSet, toMap, joining, counting, summingInt, averagingDouble и ошибка повторяющегося ключа.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.