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


Reply via email to