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
provided
    * predicate.
    *
    * @param filter a predicate which returns {@code true} for elements to
be
    * retained.
    * @return {@code true} if any elements were retained.
    */
    // XXX potential source incompatibility with retainAll(null) now being
ambiguous
    boolean retainAll(Predicate<? super E> filter) {
        boolean retained = false;
        Iterator<E> each = this.iterator();
        while(each.hasNext()) {
            if(!filter.eval(each.next())) {
                each.remove();
            } else {
                retained = true;
            }
       }

        return retained;
    }

...
}


More information about the lambda-dev mailing list