Collectors.joining()
Сборщик, который склеивает строки потока в одну.
Доступно с: Java 8
Синтаксис
static Collector<CharSequence, ?, String> joining()
static Collector<CharSequence, ?, String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| delimiter | CharSequence | Необязательный разделитель. |
| prefix | CharSequence | Необязательная строка в начале. |
| suffix | CharSequence | Необязательная строка в конце. |
Возвращаемое значение
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 и ошибка повторяющегося ключа.