Конкатенация списка целых в java 8 - PullRequest
0 голосов
/ 23 сентября 2019

Как я могу объединить список целых чисел

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Optional<Integer> result = numbers.stream().reduce((subtotal, element)-> Integer.valueOf(subtotal + ", " + element));

Но я получил исключение:

Исключение в потоке "main" java.lang.NumberFormatException: Для входной строки:«1, 2» в java.lang.NumberFormatException.forInputString (неизвестный источник)

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Вы можете использовать String.join для этого.Он объединяет данные Iterable из CharSequence с указанным разделителем (", " в вашем случае):

List<String> strings = numbers.stream().map(Object::toString).collect(Collectors.toList())

String concatenated = String.join(", ", strings)
3 голосов
/ 23 сентября 2019

Если вы хотите сделать это, используя reduce, преобразуйте целые числа в строки, а затем используйте функцию накопителя

Optional<String> result = numbers.stream().map(i->i.toString()).reduce((i,j)->i+", "+j);

Или вы можете просто использовать Collectors.joining

String str = numbers.stream().map(i->i.toString()).collect(Collectors.joining(", "));
...