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.go...@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 >> >