Encodera

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

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

Как превратить список в строку

Короткий ответ

Для списка строк используйте 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() — Преобразует каждый элемент потока.

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

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