如何在Stream链中调用setter

如何在不使用forEach()的情况下调用Stream链中的setter?

List newFoos = foos.stream() .filter(foo -> Foo::isBlue) .map(foo -> foo.setTitle("Some value")) //I am unable to use this because also changing the data type into Object .collect(Collectors.toList()); 

使用像这样的偷看方法。 它不会影响流。

  List newFoos = foos.stream() .filter(Foo::isBlue) .peek(foo -> foo.setTitle("Some value")) .collect(Collectors.toList()); 

forEach似乎是一个更适合工作的工具,但是如果你不想使用它,你总是可以定义一个匿名的多行lambda:

 List foos = foos.stream() .filter(foo -> Foo::isBlue) .map(foo -> { foo.setTitle("Some value"); return foo; }) .collect(Collectors.toList());