Java 8 Streams Java Java API
java.util.stream.LongStream
Spliterator.OfLong spliterator()
This terminal operation returns a spliterator for the elements of this stream.
package com.logicbig.example.longstream;import java.util.Spliterator;import java.util.stream.LongStream;import java.util.stream.StreamSupport;public class SpliteratorExample { public static void main(String... args) { Spliterator.OfLong s = LongStream.range(1, 10) .spliterator(); Spliterator.OfLong s2 = s.trySplit(); LongStream stream1 = StreamSupport.longStream(s, false); LongStream stream2 = StreamSupport.longStream(s2, false); System.out.println(" -- first half --"); long sumOfTwice = stream1.peek(System.out::println) .map(lg -> Math.multiplyExact(lg, 2)) .sum(); System.out.println(" -- second half --"); long sumOfSquared = stream2.peek(System.out::println) .map(lg -> Math.multiplyExact(lg, lg)) .sum(); long totalSum = Math.addExact(sumOfTwice, sumOfSquared); System.out.printf("--total sum --%n%s%n", totalSum); }}
-- first half --56789 -- second half --1234--total sum --100
Parallel streams:
package com.logicbig.example.longstream;import java.util.Spliterator;import java.util.stream.LongStream;import java.util.stream.StreamSupport;public class SpliteratorExample2 { public static void main(String... args) { Spliterator.OfLong s = LongStream.range(1, 10) .spliterator(); Spliterator.OfLong s2 = s.trySplit(); LongStream stream1 = StreamSupport.longStream(s, true); LongStream stream2 = StreamSupport.longStream(s2, true); System.out.println(" -- first half --"); long sumOfTwice = stream1.peek(System.out::println) .map(lg -> Math.multiplyExact(lg, 2)) .sum(); System.out.println(" -- second half --"); long sumOfSquared = stream2.peek(System.out::println) .map(lg -> Math.multiplyExact(lg, lg)) .sum(); long totalSum = Math.addExact(sumOfTwice, sumOfSquared); System.out.printf("--total sum --%n%s%n", totalSum); }}
-- first half --98765 -- second half --3412--total sum --100