Обратите внимание, что если вы делаете это не для самообразования, а для фактического использования его в каком-то производственном коде, вы можете рассмотреть встроенный Collectors.joining
сборщик:
String result = numbers.stream()
.map(Object::toString)
// or
// .map(x -> x.toString()) // exactly the same
// or
// .map(String::valueOf) // handles nulls by turning them to the string "null"
.collect(Collectors.joining(","));
Имеет несколько перегрузок, аналогично Scala mkString
.Тем не менее, этот сборщик принимает только CharSequence
s, поэтому вам необходимо явно преобразовать значения в строки как отдельный шаг map
.
Кроме того, существует метод String.join
, который также работает для коллекции CharSequence
с.Если у вас есть один из них (например, List<String>
), может быть удобнее использовать этот метод, чем сначала преобразовывать коллекцию в поток:
List<String> strings = ...;
String result = String.join(",", strings);
// vs
String result = strings.stream().collect(Collectors.joining(","))