hg: lambda/lambda/jdk: 2 new changesets

Remi Forax forax at univ-mlv.fr
Mon Nov 12 17:04:45 PST 2012


On 11/12/2012 07:25 PM, brian.goetz at oracle.com wrote:
> Changeset: 969458b5ee9d
> Author:    briangoetz
> Date:      2012-11-12 12:45 -0500
> URL:       http://hg.openjdk.java.net/lambda/lambda/jdk/rev/969458b5ee9d
>
> Garbage-collect dead Iterators methods; move filter/map methods from {Filter,Map}Op to Iterators; add Iterators.asEnumeration
>
> ! src/share/classes/java/util/Iterators.java
> ! src/share/classes/java/util/concurrent/ForkJoinUtils.java
> ! src/share/classes/java/util/streams/ops/FilterOp.java
> ! src/share/classes/java/util/streams/ops/MapOp.java
> - test-ng/tests/org/openjdk/tests/java/util/IteratorsNullTest.java
> ! test-ng/tests/org/openjdk/tests/java/util/streams/ops/FilterOpTest.java
> ! test-ng/tests/org/openjdk/tests/java/util/streams/ops/MapOpTest.java
> ! test-ng/tests/org/openjdk/tests/java/util/streams/ops/TeeOpTest.java

also filterIterator should be written like this

     public static<T> Iterator<T> filter(Iterator<? extends T> source, Predicate<? super T> predicate) {
         Objects.requireNonNull(source);
         Objects.requireNonNull(predicate);
         return new Iterator<T>() {
             private boolean nextReady;
             private T nextValue;

             @Override
             public boolean hasNext() {
                 if (nexReady) {
                     return true;
                 }
                 while (source.hasNext()) {
                     T nextValue = source.next();
                     if (predicate.test(nextValue)) {
                       this.nextValue = nextValue;
                       return nextReady = true;
                     }
                 }
                 return false;
             }

             @Override
             public T next() {
                 if (nextReady || hasNext()) {
                     nextReady = false;
                     T nextValue = this.nextValue;
                     this.nextValue = null; // avoid reference leak
                     return nextValue
                 }
                 throw new NoSuchElementException();
             }
         };
     }


Rémi



More information about the lambda-dev mailing list