enhanced for loop with multiple iteration variables

Alan Snyder javalists at cbfiddle.com
Fri Dec 21 02:19:14 UTC 2018


RIght, but I don’t see that as a general solution.

Its also a bit kludgy, like saying that methods need only one parameter because you can always pass a data object.

> On Dec 20, 2018, at 2:50 PM, Brian Goetz <brian.goetz at oracle.com> wrote:
> 
> 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