IteratorExtensions.java 文件源码

java
阅读 28 收藏 0 点赞 0 评论 0

项目:xtext-lib 作者:
/**
 * 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();
        }
    };
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号