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
, 2
and 3
,我期望concatenated
is "123"
or "1,2,3"
.
一种简单的方法是将列表项附加到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 流,然后将其缩减为所有元素的串联。
Note: This is normal reduction
which performs in O(n2)
为了获得更好的性能,请使用StringBuilder
or mutable reduction
类似于 F. Böller 的回答。
String s = list.stream().map(Object::toString).collect(Collectors.joining(","));
Ref: 流量减少 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#Reduction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)