diff options
Diffstat (limited to 'main/src/cgeo/geocaching/utils/MiscUtils.java')
| -rw-r--r-- | main/src/cgeo/geocaching/utils/MiscUtils.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/utils/MiscUtils.java b/main/src/cgeo/geocaching/utils/MiscUtils.java new file mode 100644 index 0000000..122c4eb --- /dev/null +++ b/main/src/cgeo/geocaching/utils/MiscUtils.java @@ -0,0 +1,40 @@ +package cgeo.geocaching.utils; + +import org.apache.commons.collections4.iterators.IteratorIterable; +import org.apache.commons.lang3.NotImplementedException; + +import java.util.Iterator; +import java.util.List; + +final public class MiscUtils { + + private MiscUtils() {} // Do not instantiate + + public static <T> Iterable<List<T>> buffer(final List<T> original, final int n) { + if (n <= 0) { + throw new IllegalArgumentException("buffer size must be positive"); + } + return new IteratorIterable<List<T>>(new Iterator<List<T>>() { + final int size = original.size(); + int next = 0; + + @Override + public boolean hasNext() { + return next < size; + } + + @Override + public List<T> next() { + final List<T> result = original.subList(next, Math.min(next + n, size)); + next += n; + return result; + } + + @Override + public void remove() { + throw new NotImplementedException("remove"); + } + }); + } + +} |
