package ilarkesto.base;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author K. Grubalski
*/
public class EndlessList<T> implements Iterator<T>, Iterable<T> {
private ArrayList<T> list;
private int idx = -1;
private boolean reset = false;
public EndlessList() {
list = new ArrayList<T>();
}
public boolean hasNext() {
if (reset) {
reset = false;
idx = -1;
return false;
}
if (list.size() < 1) return false;
if (idx >= list.size()) {
idx = -1;
return false;
}
return true;
}
public T next() {
reset = false;
idx++;
if (idx >= list.size()) {
idx = 0;
} else if (idx == list.size() - 1) {
reset = true;
}
return list.get(idx);
}
public void add(T value) {
list.add(value);
}
public void remove() {
throw new UnsupportedOperationException();
}
/**
* Needed to work with for-each-loop.
*/
public Iterator iterator() {
return this;
}
public static void main(String[] args) {
EndlessList l = new EndlessList();
l.add("erstes");
l.add("zweites");
l.add("drittes");
l.add("viertes");
// for (String string : l) {
// System.out.println(string);
// }
System.out.println(l.next());
System.out.println(l.next());
System.out.println(l.next());
System.out.println(l.next());
System.out.println(l.next());
System.out.println(l.next());
System.out.println(l.next());
}
}