Design for collections upgrades - correction

Peter Levart peter.levart at marand.si
Thu Mar 10 04:52:15 PST 2011


On 03/10/11, Peter Levart wrote:
> 
> 
> public interface Iterable<T>
> {
>     Iterator<T> iterator();
> 
>     // eager/lazy switching
> 
>     // iterables are by default lazy (unless overriden by a subtype such as Collection)
>     Iterable<T> toLazy(); // default Defenders.iterableToSelf;
> 
>     // collect to ArrayList by default
>     Collection<T> toEager(); // default Defenders.iterableToArrayList;
> 
>     // lazy filter/map...
> 
>     Iterable<T> filter(Predicate<? super T> predicate) default Defenders.iterableLazyFilter;
> 
>     <R> Iterable<R> map(Mapper<? super T, ? extends R> mapper) default Defenders.iterableLazyMap;
> 
>     // collecting/filtering/mapping to provided instance
> 
>     <C extends Collection<? super T>> C addTo(C collection) default Defenders.iterableAddTo;
> 

The last two defender methods:

>     <C extends Collection<? super T>> C filterTo(C collection) default Defenders.iterableFilterTo;
> 
>     <C extends Collection<? super T>> C mapTo(C collection) default Defenders.iterableMapTo;

...should have been writen as:

    <C extends Collection<? super T>> C filterTo(Predicate<? super T> predicate, C collection); // default Defenders.iterableFilterTo;

    <R, C extends Collection<R>> C mapTo(Mapper<? super T, ? extends R> mapper, C collection); // default Defenders.iterableMapTo;

> }


Peter


More information about the lambda-dev mailing list