enhanced for loop with multiple iteration variables

Alan Snyder javalists at cbfiddle.com
Wed Dec 19 14:54:10 UTC 2018

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.


More information about the core-libs-dev mailing list