Lambdas are clean, but limited in current Java compared to nested blocks. Are full featured lambdas on the horizon?
If not, then we still need loops and iterators. Alan > On Dec 20, 2018, at 3:00 PM, Remi Forax <fo...@univ-mlv.fr> wrote: > > or > map.forEach((key, value) -> { > ... > }); > > Rémi > > ----- Mail original ----- >> De: "Brian Goetz" <brian.go...@oracle.com> >> À: "Alan Snyder" <fishgar...@cbfiddle.com>, "core-libs-dev" >> <core-libs-dev@openjdk.java.net> >> Envoyé: Jeudi 20 Décembre 2018 23:50:15 >> Objet: Re: enhanced for loop with multiple iteration variables > >> For Map, you can do: >> >> for (Map.Entry<K,V> e : map.entrySet()) { ... } >> >> and you're already there. >> >> >> >> On 12/19/2018 9:54 AM, Alan Snyder wrote: >>> Has any consideration been given to supporting iterators that provide more >>> than >>> one iteration variable in the enhanced for loop? >>> >>> Obvious uses would be maps (keys and values) and lists (indexes and values). >>> >>> I have in mind keeping the syntactic sugar approach by using one or more >>> extensions of the Iterator/Iterable interfaces, such as, for example: >>> >>> interface Iterator2<E1,E2> extends Iterator<E1> { >>> E2 get2(); >>> } >>> >>> with the extra methods providing the values for the extra variables >>> (associated >>> with the previous call to next). >>> >>> Extending interfaces is not required, but it makes the trailing variables >>> optional, which might be useful. For example, the same iterator could >>> provide >>> values or values and keys. >>> >>> The fact that this approach only works for a fixed set of numbers of >>> variables >>> does not bother me unduly. >>> >>> Alan >