我想知道是否可以将它更整洁地编写为流函数:
MyObject myObject = new MyObject();
for (Thing thing : listofThings) {
myObject = myObject.combine(thing);
}
答案 0 :(得分:9)
是的,将Stream
与reduce
一起使用:
MyObject myObject = listofThings.stream()
.reduce(new MyObject(),
MyObject::combine,
MyObject::combiner);
其中combiner
是一种MyObject
方法,它采用另一个MyObject
实例并将其组合到当前对象中。
或者,您可以先将map
个实例Thing
变成MyObject
个实例,然后将这些实例简化为一个MyObject
实例:
MyObject myObject = listofThings.stream()
.map(new MyObject()::combine)
.reduce(MyObject::combiner)
.orElseGet(MyObject::new);