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;
}
}