diff --git a/src/main/java/com/corundumstudio/socketio/misc/CompositeIterable.java b/src/main/java/com/corundumstudio/socketio/misc/CompositeIterable.java index 07f2513..00e345a 100644 --- a/src/main/java/com/corundumstudio/socketio/misc/CompositeIterable.java +++ b/src/main/java/com/corundumstudio/socketio/misc/CompositeIterable.java @@ -19,14 +19,11 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class CompositeIterable implements Iterable, Iterator { +public class CompositeIterable implements Iterable { private List> iterablesList; private Iterable[] iterables; - private Iterator> listIterator; - private Iterator currentIterator; - public CompositeIterable(List> iterables) { this.iterablesList = iterables; } @@ -52,35 +49,8 @@ public class CompositeIterable implements Iterable, Iterator { iterators.add(iterable.iterator()); } } - listIterator = iterators.iterator(); - currentIterator = null; - return this; - } - - @Override - public boolean hasNext() { - if (currentIterator == null || !currentIterator.hasNext()) { - while (listIterator.hasNext()) { - Iterator iterator = listIterator.next(); - if (iterator.hasNext()) { - currentIterator = iterator; - return true; - } - } - return false; - } - return currentIterator.hasNext(); + return new CompositeIterator(iterators.iterator()); } - @Override - public T next() { - hasNext(); - return currentIterator.next(); - } - - @Override - public void remove() { - currentIterator.remove(); - } } diff --git a/src/main/java/com/corundumstudio/socketio/misc/CompositeIterator.java b/src/main/java/com/corundumstudio/socketio/misc/CompositeIterator.java new file mode 100644 index 0000000..ddeae75 --- /dev/null +++ b/src/main/java/com/corundumstudio/socketio/misc/CompositeIterator.java @@ -0,0 +1,40 @@ +package com.corundumstudio.socketio.misc; + +import java.util.Iterator; + +public class CompositeIterator implements Iterator { + + private Iterator> listIterator; + private Iterator currentIterator; + + public CompositeIterator(Iterator> listIterator) { + this.currentIterator = null; + this.listIterator = listIterator; + } + + @Override + public boolean hasNext() { + if (currentIterator == null || !currentIterator.hasNext()) { + while (listIterator.hasNext()) { + Iterator iterator = listIterator.next(); + if (iterator.hasNext()) { + currentIterator = iterator; + return true; + } + } + return false; + } + return currentIterator.hasNext(); + } + + @Override + public T next() { + hasNext(); + return currentIterator.next(); + } + + @Override + public void remove() { + currentIterator.remove(); + } +}