enhanced for loop with multiple iteration variables
Brian Goetz
brian.goetz at oracle.com
Thu Dec 20 22:50:15 UTC 2018
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