RKeys.keysIterable added. #203
parent
5185aee75c
commit
c7e2497bf8
@ -0,0 +1,71 @@
|
||||
package org.redisson.misc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class CompositeIterable<T> implements Iterable<T>, Iterator<T> {
|
||||
|
||||
private List<Iterable<T>> iterablesList;
|
||||
private Iterable<T>[] iterables;
|
||||
|
||||
private Iterator<Iterator<T>> listIterator;
|
||||
private Iterator<T> currentIterator;
|
||||
|
||||
public CompositeIterable(List<Iterable<T>> iterables) {
|
||||
this.iterablesList = iterables;
|
||||
}
|
||||
|
||||
public CompositeIterable(Iterable<T> ... iterables) {
|
||||
this.iterables = iterables;
|
||||
}
|
||||
|
||||
public CompositeIterable(CompositeIterable<T> iterable) {
|
||||
this.iterables = iterable.iterables;
|
||||
this.iterablesList = iterable.iterablesList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
List<Iterator<T>> iterators = new ArrayList<Iterator<T>>();
|
||||
if (iterables != null) {
|
||||
for (Iterable<T> iterable : iterables) {
|
||||
iterators.add(iterable.iterator());
|
||||
}
|
||||
} else {
|
||||
for (Iterable<T> iterable : iterablesList) {
|
||||
iterators.add(iterable.iterator());
|
||||
}
|
||||
}
|
||||
listIterator = iterators.iterator();
|
||||
currentIterator = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
if (currentIterator == null || !currentIterator.hasNext()) {
|
||||
while (listIterator.hasNext()) {
|
||||
Iterator<T> 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();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue