我想知道是否可以将其编写为更简洁的流函数:
MyObject myObject = new MyObject();
for (Thing thing : listofThings) {
myObject = myObject.combine(thing);
}
最佳答案
是的,使用带有reduce
的Stream
:
MyObject myObject = listofThings.stream()
.reduce(new MyObject(),
MyObject::combine,
MyObject::combiner);
其中 combiner
是一个 MyObject
方法,它采用另一个 MyObject
实例并将其组合到当前对象中。
作为替代方案,您可以首先将 Thing
实例映射
到 MyObject
实例,然后将这些实例缩减为单个 MyObject
实例:
MyObject myObject = listofThings.stream()
.map(new MyObject()::combine)
.reduce(MyObject::combiner)
.orElseGet(MyObject::new);
关于java - 可以将其转换为单行流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53740670/