package tc.oc.commons.core.collection;
import java.util.AbstractCollection;
import java.util.Collection;
import java.util.Iterator;
import com.google.common.collect.Iterators;
public class FlatCollection<T> extends AbstractCollection<T> {
private final Iterable<? extends Collection<T>> collections;
public FlatCollection(Iterable<? extends Collection<T>> collections) {
this.collections = collections;
}
@Override
public Iterator<T> iterator() {
return Iterators.concat(Iterators.transform(collections.iterator(), Iterable::iterator));
}
@Override
public int size() {
int size = 0;
for(Collection<T> c : collections) {
size += c.size();
}
return size;
}
}