Collections are actually heavily using iterators in both languages. Whenever you look at the elements of a collection, there is some kind of iterator, even if you do not see it explicitly in the code. I gave examples in Java, as I am more familiar with it.
Preferred idiom for iterating over a build prior to Java 5 - explicitly using Iterator:
for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomething((Element) i.next()); // (No generics before 1.5)
}
And since Java 5:
for (Element e : elements) {
doSomething(e);
}
-, , Iterator .