package com.googlecode.totallylazy.iterators; import com.googlecode.totallylazy.predicates.Predicate; import java.util.Iterator; public final class TakeWhileIterator<T> extends StatefulIterator<T> { private final Iterator<? extends T> iterator; private final Predicate<? super T> predicate; public TakeWhileIterator(final Iterator<? extends T> iterator, final Predicate<? super T> predicate) { this.iterator = iterator; this.predicate = predicate; } @Override public final T getNext() { if(iterator.hasNext()){ T item = iterator.next(); if(predicate.matches(item)){ return item; } } return finished(); } }