import java.util.*; public class LinkedList { // Päätasolla määritelty rajapinta. Runko jätetty pois... public interface Linkable { ... } // Listan alkusolmu. Linkable head; // Metodien rungot jätetty tästä pois. public void addToHead(Linkable node) { ... } public Linkable removeHead() { ... } // Tämä metodi palauttaa Enumeration-olion, jolla voi selata tätä listaa. public Enumeration enumerate() { return new LinkedListEnumerator(this); } } // Tässä luokassa on määritelty Enumeration-tyyppi, jolla käydään läpi // LinkedList-oliossa olevat solmut. Huomaa, että jokainen LinkedListEnumerator // olio liittyy tiettyyn LinkedList-olioon, joka määritellään enumeraattorin // konstruktorikutsussa. class LinkedListEnumerator implements Enumeration { private LinkedList container; private LinkedList.Linkable current; public LinkedListEnumerator(LinkedList l) { container = l; current = container.head; } public boolean hasMoreElements() { return (current != null); } public Object nextElement() { if (current == null) throw new NoSuchElementException("LinkedList"); Object value = current; current = current.getNext(); return value; } }