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

Brian Goetz brian.goetz at oracle.com
Fri Aug 19 09:33:33 PDT 2011


Sorry, we don't discuss syntax here.

On 8/19/2011 12:26 PM, Neal Gafter wrote:
> 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