The design pattern represented by Java's Iterator interface is the Iterator pattern. It provides a standard way to traverse a collection without exposing how that collection stores its elements.
The pattern separates traversal from the collection itself. A client asks a collection for an iterator, then uses operations such as hasNext() and next() to move through the elements. The client does not need to know whether the data is held in an array, linked structure, tree, or another representation.
Java's java.util.Iterator interface became part of the collections framework introduced in JDK 1.2. Collection classes such as ArrayList and HashSet provide iterator() methods that return suitable iterator objects. The interface is therefore the traversal contract; concrete iterator objects carry the state of the current position.
The Iterator pattern is one of the 23 patterns described by the Gang of Four. It is often confused with Iterable: Iterable represents an object that can provide an iterator, while Iterator represents the object that performs the traversal. Java's enhanced for loop uses this relationship behind the scenes.