Как в Java преобразовать список (List) в строку (String)

Начиная с версии 1.8, чтобы соединять элементы из списка в одну строку, очень удобно использовать Stream API. Если в строку не требуется добавлять никаких обрамлений и разделителей, то можно воспользоваться таким кодом

List<Character> chars = Arrays.asList('H','e','l','l','o');
String line = chars.stream()
.map(String::valueOf)
.collect(Collectors.joining());

System.out.println(line); //Выведет "Hello"

Чтобы между элементами появился разделитель, его достаточно передать аргументом в метод Collectors.joining(). Например, так:

List<Character> chars = Arrays.asList('H','e','l','l','o');
String line = chars.stream()
.map(String::valueOf)
.collect(Collectors.joining(
", "));

System.out.println(line); //Выведет "H, e, l, l, o"

Также в Collectors.joining() можно добавить префикс и суффикс строки:

List<Character> chars = Arrays.asList('H','e','l','l','o');
String line = chars.stream()
.map(String::valueOf)
.collect(Collectors.joining(
", ", "[", "]"));

System.out.println(line); //Выведет "[H, e, l, l, o]"

Кроме того, стоит обратит внимание на метод map(Function<? super T, ? extends R> mapper). Именно в нём каждый элемент списка превращается в фрагмент конечной строки. Выражение String::valueOf применит метод valueOf класса String к каждому элементу списка и использует возвращаемое этим методом значение.

Но в метод map() можно передать и собственную функцию, которая будет делать из элемента строку так, как это нужно нам. Возьмём, например, ситуацию, когда нам нужно соединить в строку только данные из одного поля списка объектов.

public static void main(String[] args) {

class Person {

String name;
String lastName;

Person(String name, String lastName) {
this.name = name;
this.lastName = lastName;
}
}

List<Person> people = Arrays.asList(
new Person("Андрей", "Иванов"),
new Person("Юлия", "Петрова"),
new Person("Ирина", "Сидорова"));

String line = people.stream()
.map(
person -> {
return person.name;
}
)
.collect(Collectors.joining(", "));

System.out.println(line); //Выведет "Андрей, Юлия, Ирина"

}