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