package edu.stanford.nlp.util;
import java.util.*;
/**
* This cures a pet peeve of mine: that you can't use an Iterator directly in
* Java 5's foreach construct. Well, this one you can, dammit.
*
* @author Bill MacCartney
*/
public class IterableIterator<E> implements Iterator<E>, Iterable<E> {
private Iterator<E> it;
public IterableIterator(Iterator<E> it) {
this.it = it;
}
public boolean hasNext() { return it.hasNext(); }
public E next() { return it.next(); }
public void remove() { it.remove(); }
public Iterator<E> iterator() { return this; }
public static void main(String[] args) {
String[] strings = new String[] {
"do", "re", "mi", "fa", "so", "la", "ti", "do",
};
Iterator<String> it = Arrays.asList(strings).iterator();
// for (String s : it) { // UH-OH!!
// System.out.println(s);
// }
IterableIterator<String> iterit = new IterableIterator<String>(it);
for (String s : iterit) { // YAY!!
System.out.println(s);
}
}
}