Relates :
|
|
Relates :
|
|
Relates :
|
Following up on https://bugs.openjdk.java.net/browse/JDK-8075939, there's still a case where Stream.flatMap() doesn't get short circuited, when using Stream.iterator(): // -------------------------------------------------------- Iterator<Integer> it = Stream.of("a", "b") .flatMap(s -> Stream .of(1, 2, 3, 4) .filter(i -> { System.out.println(i); return true; })) .iterator(); it.hasNext(); // This consumes the entire flatmapped stream it.next(); // -------------------------------------------------------- The above program prints: 1 2 3 4 This program never stops: // -------------------------------------------------------- Iterator<Integer> it = Stream.of("a", "b") .flatMap(s -> Stream .iterate(1, i -> i) .filter(i -> { System.out.println(i); return true; })) .iterator(); it.hasNext(); it.next(); // --------------------------------------------------------
|