这可以转换成流一行吗?

Geo*_*org 2 java java-8 java-stream

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

MyObject myObject = new MyObject();

for (Thing thing : listofThings) {
    myObject = myObject.combine(thing);
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 9

是的,使用Streamwith reduce:

MyObject myObject = listofThings.stream()
                                .reduce(new MyObject(),
                                        MyObject::combine,
                                        MyObject::combiner);
Run Code Online (Sandbox Code Playgroud)

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

作为替代,可以先mapThing实例MyObject的实例,然后减少这些情况下,以一个MyObject实例:

MyObject myObject = listofThings.stream()
                                .map(new MyObject()::combine)
                                .reduce(MyObject::combiner)
                                .orElseGet(MyObject::new);
Run Code Online (Sandbox Code Playgroud)