件数指定Iterator

前回の記事 [id:gakuzo:20090227:1235728271] で書いた take ですが、これも Iterator にした方が、遅延評価っぽくていいかもしれません。

import java.util.Iterator;

public class FixedLengthIterator<T> implements Iterator<T> {

    private int index;
    private int length;
    private Iterator<? extends T> base;
    
    public FixedLengthIterator(int length, Iterator<? extends T> base) {
        this.length = length;
        this.base = base;
    }
    
    public boolean hasNext() {
        return index < length && base.hasNext();
    }

    public T next() {
        index++;
        return base.next();
    }

    public void remove() {
        base.remove();
    }
    
}