hg: lambda/lambda/jdk: Add BitSet.stream()

Brian Goetz brian.goetz at oracle.com
Fri Dec 28 11:07:58 PST 2012


True.  The original was based on one where we wanted to deferred binding 
to the state of the BitSet until the user actually wanted data.  Now we 
accomplish that through the indirection () -> spliterator, so we can 
back that out.

On 12/28/2012 1:43 PM, Remi Forax wrote:
> On 12/28/2012 07:25 PM, brian.goetz at oracle.com wrote:
>> Changeset: 606aa9a80b6d
>> Author:    briangoetz
>> Date:      2012-12-28 13:25 -0500
>> URL:       http://hg.openjdk.java.net/lambda/lambda/jdk/rev/606aa9a80b6d
>>
>> Add BitSet.stream()
>>
>> ! src/share/classes/java/util/Arrays.java
>> ! src/share/classes/java/util/BitSet.java
>> ! src/share/classes/java/util/stream/reduce/Reducers.java
>> + test-ng/tests/org/openjdk/tests/java/util/BitsetStreamTest.java
>>
>>
>
> There is an easier implementation of BitSetIterator because nextSetBit
> has no side effect.
>
>           class BitSetIterator implements PrimitiveIterator.OfInt {
>               private int next = nextSetBit(0);
>
>               @Override
>               public boolean hasNext() {
>                   return next != -1;
>               }
>
>               @Override
>               public int nextInt() {
>                   int index = next;
>                   if (index == -1) {
>                       throw new NoSuchElementException();
>                   }
>                   next = nextSetBit(index + 1);
>                   return index;
>               }
>           }
>
> cheers,
> Rémi
>
>


More information about the lambda-dev mailing list