我有这个 Java 8 代码:
Contact contact = new Contact("");
for (ContactEvent event : events) {
contact = contact.apply(event);
}
我想使用 Stream.reduce 方法将其转换为功能。我已经尝试过:
Contact contact = events.stream()
.reduce(new Contact(""),
(contact1, contactEvent) -> contact1.apply(contactEvent), //Ok!
(contact12, contact2) -> null); //I don't want this!
为什么我必须合并两个联系人
?我应该在组合器中做什么?
如果我像上面一样返回null
,它就可以正常工作。调试器甚至不执行该行(返回 null
)。
最佳答案
事实上,在这种特定情况下你无法避免组合器函数。
但是,值得一提的是,组合器函数 (contact12, contact2) -> null
根本不会被调用。为了使组合器工作,流必须是并行的。否则,只会调用累加器函数。
关于java - 如何使用 "reduce"将此循环转换为函数表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50877748/