private BaseStream<E, ?> getStream() { BaseStream<?, ?> result = getInitialSupplier().get(); for (Action<?, ?> action : this) { result = cast(result, action); } // Convey pipeline parallelism and ordering // setting to the destination stream. if (parallel) { result.parallel(); } else { result.sequential(); } if (!ordered) { result.unordered(); } @SuppressWarnings("unchecked") final BaseStream<E, ?> castedResult = (BaseStream<E, ?>) result; return castedResult; }
BufferedReader reader = ...; reader.lines().unordered().map(...);
int equal = 0; for(int i=0; i<100; i++) { // create test input map like {0 -> 0, 1 -> 1, 2 -> 2, ...} Map<Integer, Integer> input = IntStream.range(0, 200).boxed() .collect(Collectors.toMap(x -> x, x -> x)); Map<Integer, Integer> result = new HashMap<>(); // write it into another HashMap in parallel way without key collisions input.entrySet().parallelStream().unordered() .forEach(entry -> result.put(entry.getKey(), entry.getValue())); if(result.equals(input)) equal++; } System.out.println(equal);
@SuppressWarnings("unchecked") @Override public S unordered() { stream = stream().unordered(); return (S) this; }
public static void main(String[] args) { Set<Integer> l = new TreeSet<>(); l.add(1); l.add(10); l.add(3); l.add(-3); l.add(-4); System.out.println("Serial Stream"); l.stream().map(s->s+" ").forEach(System.out::print); System.out.println(); l.stream().unordered().map(s->s+" ").forEach(System.out::print); System.out.println("\n"); System.out.println("Unordered Operations on a Parallel Stream"); l.stream().parallel().map(s->s+" ").forEach(System.out::print); System.out.println(); l.stream().unordered().map(s->s+" ").parallel().forEach(System.out::print); System.out.println("\n"); System.out.println("Ordered Operations on a Parallel Stream"); l.stream().parallel().skip(2).limit(2).findFirst().ifPresent(System.out::print); System.out.println(); l.stream().unordered().parallel().skip(2).limit(2).findFirst().ifPresent(System.out::print); System.out.println("\n"); }
private BaseStream<E, ?> getStream() { BaseStream<?, ?> result = getInitialSupplier().get(); for (Action<?, ?> action : this) { result = cast(result, action); } // Convey pipeline parallelism and ordering // setting to the destination stream. if (parallel) { result.parallel(); } else { result.sequential(); } if (!ordered) { result.unordered(); } @SuppressWarnings("unchecked") final BaseStream<E, ?> castedResult = (BaseStream<E, ?>) result; return castedResult; }