繁体   English   中英

这可以转换成流一行吗?

[英]Can this be converted to stream one-liner?

我想知道这是否可以作为流函数更整洁地编写:

MyObject myObject = new MyObject();

for (Thing thing : listofThings) {
    myObject = myObject.combine(thing);
}

是的,使用带有reduceStream

MyObject myObject = listofThings.stream()
                                .reduce(new MyObject(),
                                        MyObject::combine,
                                        MyObject::combiner);

其中, combiner是一个MyObject方法,它接受另一个MyObject实例并将其组合到当前对象中。

或者,您可以先将Thing实例mapMyObject实例,然后将这些实例减少为单个MyObject实例:

MyObject myObject = listofThings.stream()
                                .map(new MyObject()::combine)
                                .reduce(MyObject::combiner)
                                .orElseGet(MyObject::new);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM