Paul King created GROOVY-12054:
----------------------------------

             Summary: A preliminary set of "fat-free" DGM methods
                 Key: GROOVY-12054
                 URL: https://issues.apache.org/jira/browse/GROOVY-12054
             Project: Groovy
          Issue Type: Sub-task
            Reporter: Paul King
            Assignee: Paul King


h2. Overview

Continues the "fat-free lambda" work from GROOVY-12034 by adding 
{{java.util.function}}-typed overloads to the most-used higher-order DGM 
methods. Pairs with the {{org.apache.groovy.util.Lambdas}} / {{Closures}} 
{{curryWith}} helpers landed under GROOVY-12043 — callers can pass 
{{Predicate}}/{{Function}}/{{Consumer}} (and the Bi-* / ObjInt-* SAMs where 
shape demands) directly without {{Closure}} wrapping, and compose with 
{{Lambdas.curryWith(...)}} for the right-curry pattern that motivated 
GROOVY-12034.

h2. Scope

* {{each(Iterable<T>, Consumer<? super T>)}} -> {{Iterable<T>}}
* {{findAll(Iterable<T>, Predicate<? super T>)}} -> {{List<T>}}
* {{find(Iterable<T>, Predicate<? super T>)}} -> {{T}}
* {{any(Iterable<T>, Predicate<? super T>)}} -> {{boolean}}
* {{every(Iterable<T>, Predicate<? super T>)}} -> {{boolean}}
* {{inject(Iterable<T>, BinaryOperator<T>)}} -> {{T}} (unseeded)
* {{inject(Iterable<E>, U initial, BiFunction<U, ? super E, U>)}} -> {{U}} 
(seeded)
* {{collect(Iterable<E>, C collector, Function<? super E, ? extends T>)}} -> 
{{C}} (collector variant; the basic form {{collect(Iterable<E>, Function)}} 
already landed under GROOVY-12034)
* {{groupBy(Iterable<T>, Function<? super T, ? extends K>)}} -> {{Map<K, 
List<T>>}}
* {{eachWithIndex(Iterable<T>, ObjIntConsumer<? super T>)}} -> {{Iterable<T>}} 
(uses {{ObjIntConsumer}} to avoid per-element {{Integer}} autoboxing)
* {{collectEntries(Iterable<E>, Function<? super E, ? extends Map.Entry<K, 
V>>)}} -> {{Map<K, V>}} (single-function form; the two-function form already 
exists)
* {{collect(Map<K, V>, BiFunction<? super K, ? super V, ? extends T>)}} -> 
{{List<T>}}
* {{findAll(Map<K, V>, BiPredicate<? super K, ? super V>)}} -> {{Map<K, V>}}
* {{collect(Iterator<E>, Function<? super E, ? extends T>)}} -> {{List<T>}}
* {{findAll(Iterator<T>, Predicate<? super T>)}} -> {{List<T>}} — new; the 
existing {{Closure}} family has no {{findAll(Iterator, Closure)}}, so this is a 
fat-free-only addition for symmetry with {{collect(Iterator, Function)}}
* {{findAll(Set<T>, Predicate<? super T>)}} -> {{Set<T>}} — the one method 
where preserving the {{Set}} self-type matters for downstream membership 
semantics

Total: ~16 new overloads.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to