enhanced for loop with multiple iteration variables

Alan Snyder javalists at cbfiddle.com
Fri Dec 21 02:20:46 UTC 2018


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 <forax at univ-mlv.fr> wrote:
> 
> or
>  map.forEach((key, value) -> {
>    ...
>  });
> 
> Rémi
> 
> ----- Mail original -----
>> De: "Brian Goetz" <brian.goetz at oracle.com>
>> À: "Alan Snyder" <fishgarage at cbfiddle.com>, "core-libs-dev" <core-libs-dev at 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
> 



More information about the core-libs-dev mailing list