ITERATIONS AND ITERATORS - MAKING YOUR OWN - SOMETIMES YOU CAN JUST DELEGATE import java.util.ArrayList; import java.util.Iterator; class TestHolder { private ArrayList list = new ArrayList(); public void add(Test t) { list.add(t); } public Iterator iterator() { return list.iterator(); } } class Test { private String name; public Test(String name) { this.name = name; } public String getName() { return name; } public static void main(String[] args) { TestHolder th = new TestHolder(); th.add(new Test("hi")); th.add(new Test("there")); for (Iterator i = th.iterator(); i.hasNext(); ) { Test t = (Test) i.next(); System.out.println(t.getName()); } } } $ javac Test.java;java Test hi there $