Additional Collectors
Brian Goetz
brian.goetz at oracle.com
Wed Apr 3 10:27:32 PDT 2013
There's been some feedback on lambda-dev and from the recent Lambda Hack
Day on Collectors. There were two big categories:
1. Need more / better docs.
2. We want some more collectors.
The first is obvious and we've been working on those. Here are some
suggestions for simple additions to the Collector set.
- count() (and possibly sum, min, max)
These are straighforward analogues of the specialized stream methods;
they serve as a "gentle on ramp" to understanding reduction.
People also expressed concern that the "toMap()" (nee mappedTo,
joiningWith) is not flexible enough. As a reminder, what toMap does is
take a Stream<T> and a function T->U and produces a Map<T,U>. Some
people call this "backwards"; they would rather have something that
takes a Stream<T> and function T->K and produces a Map<K,T>. And others
would rather have something that takes two functions T->K and T->U and
produces a Map<K,U>.
All of these are useful enough. The question is how to fit them into
the API. I think the name "toMap" is a bit of a challenge, since there
are several "modes" and not all of them can be easily handled by
overloads. Maybe:
toMap(T->U) // first version
toMap(T->K, T->U) // third version
and leave the second version out, since the third version can easily
simulate the second?
More information about the lambda-libs-spec-experts
mailing list