Как в 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); //Выведет "Андрей, Юлия, Ирина"
}