<p>Consider:</p>

<pre><code>List&lt;String&gt; someList = new ArrayList&lt;String&gt;();
// add "monkey", "donkey", "skeleton key" to someList
</code></pre>



<pre><code>for (String item : someList) {
    System.out.println(item);
}
</code></pre>

<p>What would the equivalent <code>for</code> loop look like without using the <em>for each</em> syntax?</p>

```
```
for (Iterator<String> i = someIterable.iterator(); i.hasNext();) {
    String item = i.next();
    System.out.println(item);
}
```
```
Note that if you need to use
```
i.remove();
```
in your loop, or access the actual iterator in some way, you cannot use the
```
for ( : )
```
idiom, since the actual iterator is merely inferred.
As was noted by Denis Bueno, this code works for any object that implements the
```
Iterable
```
interface
.
Also, if the right-hand side of the
```
for (:)
```
idiom is an
```
array
```
rather than an
```
Iterable
```
object, the internal code uses an int index counter and checks against
```
array.length
```
instead. See the
Java Language Specification
.