我有这个Java 8代码:
Contact contact = new Contact(""); for (ContactEvent event : events) { contact = contact.apply(event); }
我想用 Stream.reduce 方法。我尝试过:
Stream.reduce
Contact contact = events.stream() .reduce(new Contact(""), (contact1, contactEvent) -> contact1.apply(contactEvent), //Ok! (contact12, contact2) -> null); //I don't want this!
我为什么要把两个结合起来 Contact S?我该怎么做呢?
Contact
如果我回来 null 和上面一样,它工作得很好。调试器甚至不执行该行( return null )。
null
return null
事实上,在这种特定的情况下,您无法避免组合器函数。
然而,值得一提的是,合并器功能 (contact12, contact2) -> null 不会被呼叫。为了使合并器工作,流必须是并行的。否则,只调用Accumulator函数。
(contact12, contact2) -> null