public static MapStream filter()

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);
            }
          };
        }
      };
    }