hg: lambda/lambda/jdk: initial small set of extension methods on Collection and List which provide functional-style variants of common operations.

Neal Gafter neal at gafter.com
Fri Aug 19 09:26:27 PDT 2011

On Thu, Aug 18, 2011 at 3:47 PM, Mike Duigou <mike.duigou at oracle.com> wrote:

> > Hi Paul, the real name of these classes is garbage class.
> > But ListGarbage is not that cool :)
> >
> > As Mike says, it's just the first cut, I really hope we will not
> > have any of these classes at all at the end.
> Where do you advocate that they should go? For the collection extensions
> the obvious location is Collections. Should we just create parallel classes
> for List, Set, Map, etc? ie. Lists, Sets, Maps, etc.

They should go in the interface.  For example:

public interface Collection ... {

    * Retains all of the elements of this collection which match the
    * predicate.
    * @param filter a predicate which returns {@code true} for elements to
    * retained.
    * @return {@code true} if any elements were retained.
    // XXX potential source incompatibility with retainAll(null) now being
    boolean retainAll(Predicate<? super E> filter) {
        boolean retained = false;
        Iterator<E> each = this.iterator();
        while(each.hasNext()) {
            if(!filter.eval(each.next())) {
            } else {
                retained = true;

        return retained;


More information about the lambda-dev mailing list