小编典典

使用流将对象列表转换为从 toString 方法获得的字符串

all

Java 8 中有很多有用的新东西。例如,我可以用流遍历对象列表,然后对Object‘ 实例的特定字段中的值求和。例如

public class AClass {
  private int value;
  public int getValue() { return value; }
}

Integer sum = list.stream().mapToInt(AClass::getValue).sum();

因此,我在问是否有任何方法可以构建将来自实例String的方法的输出连接在toString()一行中的方法。

List<Integer> list = ...

String concatenated = list.stream().... //concatenate here with toString() method from java.lang.Integer class

假设list包含整数和1,我希望它是or 。2``3``concatenated``"123"``"1,2,3"


阅读 103

收藏
2022-05-20

共1个答案

小编典典

一种简单的方法是将列表项附加到StringBuilder

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

StringBuilder b = new StringBuilder();
list.forEach(b::append);

System.out.println(b);

你也可以试试:

String s = list.stream().map(e -> e.toString()).reduce("", String::concat);

说明: map 将 Integer 流转换为 String 流,然后将其归约为所有元素的串联。

注意:这是normal reduction在 O(n 2 )中执行的

为了获得更好的性能,请使用StringBuildermutable reduction类似于 F. Böller 的答案。

String s = list.stream().map(Object::toString).collect(Collectors.joining(","));

参考:流减少

2022-05-20