src/share/classes/java/util/stream/DoublePipeline.java

Print this page




 360     public final DoubleStream distinct() {
 361         // While functional and quick to implement, this approach is not very efficient.
 362         // An efficient version requires a double-specific map/set implementation.
 363         return boxed().distinct().mapToDouble(i -> (double) i);
 364     }
 365 
 366     // Terminal ops from DoubleStream
 367 
 368     @Override
 369     public void forEach(DoubleConsumer consumer) {
 370         evaluate(ForEachOps.makeDouble(consumer, false));
 371     }
 372 
 373     @Override
 374     public void forEachOrdered(DoubleConsumer consumer) {
 375         evaluate(ForEachOps.makeDouble(consumer, true));
 376     }
 377 
 378     @Override
 379     public final double sum() {
 380         // TODO: better algorithm to compensate for errors
 381         return reduce(0.0, Double::sum);
 382     }
 383 
 384     @Override
 385     public final OptionalDouble min() {
 386         return reduce(Math::min);
 387     }
 388 
 389     @Override
 390     public final OptionalDouble max() {
 391         return reduce(Math::max);
 392     }
 393 
 394     @Override
 395     public final OptionalDouble average() {
 396         double[] avg = collect(() -> new double[2],
 397                                (ll, i) -> {
 398                                    ll[0]++;
 399                                    ll[1] += i;
 400                                },
 401                                (ll, rr) -> {




 360     public final DoubleStream distinct() {
 361         // While functional and quick to implement, this approach is not very efficient.
 362         // An efficient version requires a double-specific map/set implementation.
 363         return boxed().distinct().mapToDouble(i -> (double) i);
 364     }
 365 
 366     // Terminal ops from DoubleStream
 367 
 368     @Override
 369     public void forEach(DoubleConsumer consumer) {
 370         evaluate(ForEachOps.makeDouble(consumer, false));
 371     }
 372 
 373     @Override
 374     public void forEachOrdered(DoubleConsumer consumer) {
 375         evaluate(ForEachOps.makeDouble(consumer, true));
 376     }
 377 
 378     @Override
 379     public final double sum() {
 380         return evaluate(ReduceOps.makeDoubleCompensatingSummer());

 381     }
 382 
 383     @Override
 384     public final OptionalDouble min() {
 385         return reduce(Math::min);
 386     }
 387 
 388     @Override
 389     public final OptionalDouble max() {
 390         return reduce(Math::max);
 391     }
 392 
 393     @Override
 394     public final OptionalDouble average() {
 395         double[] avg = collect(() -> new double[2],
 396                                (ll, i) -> {
 397                                    ll[0]++;
 398                                    ll[1] += i;
 399                                },
 400                                (ll, rr) -> {