【问题标题】:Concatenate list of ints in java 8java 8中的整数列表连接
【发布时间】:2020-01-23 19:36:49
【问题描述】:

如何连接整数列表

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(Unknown Source)

【问题讨论】:

  • 您发布的代码有什么问题?
  • 线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:java.lang.NumberFormatException.forInputString 的“1, 2”(未知来源)在 java.lang.Integer.parseInt( Unknown Source) at java.lang.Integer.valueOf(Unknown Source) at Test.lambda$0(Test.java:10) at java.util.stream.ReduceOps$2ReducingSink.accept(Unknown Source) at java.util.Spliterators$ ArraySpliterator.forEachRemaining(未知
  • 您如何期望(subtotal + ", " + element) 具有Integer 值?

标签: java string list java-8 java-stream


【解决方案1】:

如果你想使用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(", "));

【讨论】:

  • 虽然恕我直言,但与简单的String str = numbers.toString()相比,付出了这么多努力
【解决方案2】:

您可以为此使用String.join。它以指定的分隔符(在您的情况下为", ")连接给定IterableCharSequence

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

String concatenated = String.join(", ", strings)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2016-01-08
    • 2014-12-21
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多