Iterable, Iterator

Bei map müssen über keys und values unabhängig iteriert werden.

Iterable

public interface Iterable extends java.lang.Iterable<String>{
Iterator iterator();
}

Iterator

public interface Iterator extends java.util.Iterator<String>{
String next();
boolean hasNext(); //wirft NoSuchElementException
}

Durch java.util.Iterator<~> kann man for-each Schleifen nutzen.

Implementierung

Beispielsweise bei singly linked list

public class ListQueue implements Queue {
...
// Implementierung von Queue mit Singly Linked List
...public Iterator iterator() {
return new ListNodeIter(head);
}
}
public class ListNodeIter implements Iterator {
private ListNode n;
public ListNodeIter(ListNode n) { this.n = n; }
public boolean hasNext () { return n != null; }
public String next() {
if (n == null) { return null; }
String result = n.value();
n = n.next();
return result;
}
}