[英]Can this be converted to stream one-liner?
我想知道这是否可以作为流函数更整洁地编写:
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
实例map
到MyObject
实例,然后将这些实例减少为单个MyObject
实例:
MyObject myObject = listofThings.stream()
.map(new MyObject()::combine)
.reduce(MyObject::combiner)
.orElseGet(MyObject::new);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.