class LinkedList {
class Iterator { ... }
// and so on
}
LinkedList.Iterator i = ...
class List<T> {
Iterator find(T value) { ... }
Iterator firstElement() { ... }
Iterator LastElement() { ... }
Iterator next(Iterator i) { ... }
Iterator previous(Iterator i) { ... }
}
boolean atBeginning() { ... }
boolean atEnd() { ... }
boolean equals(Iterator i) { ... }
T getValue() { ... }
void drunkardsWalk(List<?> l, int steps)
int n = l.size()
List.Iterator here = l.begin()
while steps-- > 0
int m = random(2n) - n
while m < 0 ∧ here ≠ l.begin()
here = here.previous()
++m
while m > 0 ∧ here ≠ l.end()
here = here.next()
--m
f(here.value())
class list<T>
void forEach(UnaryFunction<T> f)
// call f on every element in the list.
UnaryFunction<String> printer =
new UnaryFunction<String>(System.out)
stringList.forEach(printer)
forEach()?
List<String> stringList = new ... for (String s: stringList) // operate on s