IteratorExtensions.java 文件源码

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

项目:xtext-lib 作者:
/**
 * Returns a view on this iterator that provides all elements except 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 dropped.
 * @return an iterator without the first <code>count</code> elements. Never <code>null</code>.
 * @throws IllegalArgumentException
 *             if <code>count</code> is negative.
 */
public static <T> Iterator<T> drop(final Iterator<T> iterator, final int count) {
    if (iterator == null)
        throw new NullPointerException("iterator");
    if (count == 0)
        return iterator;
    if (count < 0)
        throw new IllegalArgumentException("Cannot drop a negative number of elements. Argument 'count' was: "
                + count);
    return new AbstractIterator<T>() {
        {
            int i = count;
            while (i > 0 && iterator.hasNext()) {
                iterator.next();
                i--;
            }
        }

        @Override
        protected T computeNext() {
            if (!iterator.hasNext())
                return endOfData();
            return iterator.next();
        }
    };
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号