IntPipelineError in a nested loop

Jose jgetino at
Tue Apr 9 03:58:59 PDT 2013


Thanks Paul,

I forgot again that streams get conssumed!!  :-( 

However there seems to be some more problems with the code, as I still get
an error message like this:

      "Exception in thread "main" java.lang.IncompatibleClassChangeError: 
  Class does not implement the requested
interface util.logger.functions.IntBiConsumer"

On the other hand I tried your suggestion of using: 

                  flatMap()      instead of           fold()

but then I get a linear stream, and I can't plug a biconsumer to the output.

The biconsumer needs to be aware of both coordinates x, and y because in
practical cases they have different meanings.

The new code, with flatMap included :

import java.util.function.Supplier;

public interface IntBiConsumer {

    void accept(int n, int m);

    static void fold(IntStream sx, Supplier<IntStream> ssy, IntBiConsumer
bc) {
        sx.forEach(nx -> ssy.get().forEach(ny -> bc.accept(nx, ny)));

    class Demo {
        public static void main(String[] args) {
            Supplier<IntStream> ssx =  () -> Streams.intRange(0, 10);
            Supplier<IntStream> ssy = () -> Streams.intRange(0, 5);
            IntBiConsumer bc = (x, y) -> System.out.println("x: " + x + ",
y: " + y);
            /*----------- FLAT ---------*/
            IntStream sx=ssx.get();
            IntStream flatted= sx.flatMap(n -> ssy.get());
            flatted.forEach(n -> System.out.println("n: " + n));
            /*----------- FOLD  ---------*/
            fold(sx, ssy, bc);

More information about the lambda-dev mailing list