Как превратить список в строку
Короткий ответ
Для списка строк используйте String.join():
void main() {
var cities = List.of("Berlin", "Paris", "Rome");
IO.println(String.join(", ", cities));
}Результат:
Berlin, Paris, RomeЧисла и объекты
Превратите элементы в строки через map() и соберите Collectors.joining():
record Product(String name, double price) {}
void main() {
var cart = List.of(new Product("Tea", 3.5), new Product("Cake", 12.0));
String text = cart.stream()
.map(p -> p.name() + " " + p.price() + " €")
.collect(Collectors.joining("; "));
IO.println(text);
}Результат:
Tea 3.5 €; Cake 12.0 €Со скобками
Вариант joining() с тремя аргументами добавляет начало и конец:
void main() {
var ids = List.of(7, 12, 30);
String sql = ids.stream().map(String::valueOf).collect(Collectors.joining(", ", "IN (", ")"));
IO.println(sql);
}Результат:
IN (7, 12, 30)Частая ошибка
Передать в String.join() список чисел. Метод принимает только строки, и код не компилируется:
void main() {
List<Integer> ids = List.of(1, 2, 3);
IO.println(String.join(", ", ids));
}Результат:
Main.java:3: error: no suitable method found for join(String,List<Integer>)Функции из этого ответа
- Collectors.joining() — Сборщик, который склеивает строки потока в одну.
- String.join() — Склеивает строки через разделитель.
- Stream.map() — Преобразует каждый элемент потока.