summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java b/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java
new file mode 100644
index 0000000..cce7521
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/CircularIterator.java
@@ -0,0 +1,31 @@
+package bjc.utils.data;
+
+import java.util.Iterator;
+
+public class CircularIterator<E> implements Iterator<E> {
+ private Iterable<E> source;
+ private Iterator<E> curr;
+
+ public CircularIterator(Iterable<E> src) {
+ source = src;
+ curr = source.iterator();
+ }
+
+ public boolean hasNext() {
+ // We always have something
+ return true;
+ }
+
+ public E next() {
+ if(curr.hasNext()) {
+ return curr.next();
+ } else {
+ curr = source.iterator();
+ return curr.next();
+ }
+ }
+
+ public void remove() {
+ curr.remove();
+ }
+}