RFR 8144675: Add a filtering collector

Paul Sandoz paul.sandoz at oracle.com
Tue Dec 8 09:27:46 UTC 2015


Hi,

Looks good.

Just minor comments.

Would you mind limiting the text (not the example code) in the JavaDoc to the 80 limit?


Collectors
—

 455      * Adapts a {@code Collector} accepting elements of type {@code T} which is filtered by filtering predicate to
 456      * each input element before accumulation.

Suggest the following:

  Adapts a {@code Collector} to one accepting elements of the same type {@code T}
  by applying the predicate to each input element and only accumulating if
  the predicate returns {@code true}


 462      * {@code Employee}, to accumulate the number of employee which is filtered the salaly in each department:

Suggest the following:

  , to accumulate the number of employees in each department
  that have a salary above a certain threshold:

Actually based on your latest email it might be clearer to replace counting() with toList()/toSet() to avoid the ambiguity with toMap and summation:

  For example, given a stream of {@code Employee}, to accumulate the employees in
  each department that have a salary above a certain threshold:

 Map<Department, Set<Employee>> wellPaidEmployeesByDeparetment
  = employees.stream().collect(groupingBy(Employee::getDepartment,
                                                 filtering(e -> e.getSalary() > 2000, toset())));


(Since we don’t specify the monetary units, it is left as an exercise to speculate whether this is well paid or not :-) ).


 472      * @param filter a predicate to be applied to the input elements

s/filter/predicate (and likewise for the method argument).


Thanks,
Paul.

> On 7 Dec 2015, at 09:59, ShinyaYoshida <bitterfoxc at gmail.com> wrote:
> 
> Hi Paul,
> Thank you for your answer.
> 
> I've just updated my webrev to use 9:
> http://cr.openjdk.java.net/~shinyafox/8144675/webrev.01/
> 
> Regards,
> shinyafox(Shinya Yoshida)
> 
> 
> 2015-12-07 17:31 GMT+09:00 Paul Sandoz <paul.sandoz at oracle.com>:
> 
>> On 7 Dec 2015, at 03:45, ShinyaYoshida <bitterfoxc at gmail.com> wrote:
>> 
>> Hi,
>> I'd like to wait for the review, but I have a trivial question:
>> 
>> Which @since is preferred, 1.9 or 9?
>> 
> 
> @since 9
> 
> 
>> For ex, at Optional#or and stream, @since 9 is used.
>> On the other hand, at Collectors#flatMap, @since 1.9 is used.
>> 
> 
> Feel free to update that to 9.
> 
> I started using @9 a little while ago in anticipation of the new version-string scheme (http://openjdk.java.net/jeps/223). I expect there will be a global sweep through the code updating @since tags.
> 
> Paul.
> 
> 
> 




More information about the core-libs-dev mailing list