in src/main/java/net/hydromatic/lambda/streams/MapStream.java [126:163]
public static <K, V> MapStream<K, V> filter(final MapStream<K, V> s,
final BiPredicate<? super K, ? super V> predicate) {
return new AbstractMapStream<K, V>() {
public Iterable<BiValue<K, V>> asIterable() {
final Enumerator<BiValue<K, V>> enumerator =
Linq4j.iterableEnumerator(s);
final Enumerator<BiValue<K, V>> enumerator2 =
new Enumerator<BiValue<K, V>>() {
public BiValue<K, V> current() {
return enumerator.current();
}
public boolean moveNext() {
while (enumerator.moveNext()) {
BiValue<K, V> o = enumerator.current();
if (predicate.eval(o.getKey(), o.getValue())) {
return true;
}
}
return false;
}
public void reset() {
enumerator.reset();
}
public void close() {
enumerator.close();
}
};
return new Iterable<BiValue<K, V>>() {
public Iterator<BiValue<K, V>> iterator() {
return Linq4j.enumeratorIterator(enumerator2);
}
};
}
};
}