/**
* Returns a view on this iterator that provides at most the first <code>count</code> entries.
*
* @param iterator
* the iterator. May not be <code>null</code>.
* @param count
* the number of elements that should be returned at most.
* @return an iterator with <code>count</code> elements. Never <code>null</code>.
* @throws IllegalArgumentException
* if <code>count</code> is negative.
*/
@Pure
public static <T> Iterator<T> take(final Iterator<T> iterator, final int count) {
if (iterator == null)
throw new NullPointerException("iterator");
if (count < 0)
throw new IllegalArgumentException("Cannot take a negative number of elements. Argument 'count' was: "
+ count);
if (count == 0)
return ImmutableSet.<T>of().iterator();
return new AbstractIterator<T>() {
private int remaining = count;
@Override
protected T computeNext() {
if (remaining <= 0)
return endOfData();
if (!iterator.hasNext())
return endOfData();
remaining--;
return iterator.next();
}
};
}
IteratorExtensions.java 文件源码
java
阅读 28
收藏 0
点赞 0
评论 0
项目:xtext-lib
作者:
评论列表
文章目录