【Java基础复习】Aggregation

Pipelines and Steams

A pipeline is a sequence of aggregate operations, containing the following components: a source; zero or more intermediate operations and a terminal operation.
在这里插入图片描述
Aggregate Operation区别于Iterators的地方:

  • They use internal iteration: Aggregate operations do not contain a method like next to instruct them to process the next element of the collection. With internal delegation, your application determines what collection it iterates, but the JDK determines how to iterate the collection. With external iteration, your application determines both what collection it iterates and how it iterates it. However, external iteration can only iterate over the elements of a collection sequentially. Internal iteration does not have this limitation. It can more easily take advantage of parallel computing, which involves dividing a problem into subproblems, solving those problems simultaneously, and then combining the results of the solutions to the subproblems. See the section Parallelism for more information.
  • They process elements from a stream: Aggregate operations process elements from a stream, not directly from a collection. Consequently, they are also called stream operations.
  • They support behavior as parameters: You can specify lambda expressions as parameters for most aggregate operations. This enables you to customize the behavior of a particular aggregate operation.

Reduction

The JDK contains many terminal operations (such as average, sum, min, max, and count) that return one value by combining the contents of a stream. These operations are called reduction operations. The JDK also contains reduction operations that return a collection instead of a single value. Many reduction operations perform a specific task, such as finding the average of values or grouping elements into categories. However, the JDK provides you withthe general-purpose reduction operations reduce and collect, which this section describes in detail.

Stream.reduce方法

T reduce(T identity, BinaryOperator<T> accumulator)
Performs a reduction on the elements of this stream, using the provided identity value and an associative accumulation function, and returns the reduced value. This is equivalent to:

T result = identity;
     for (T element : this stream)
         result = accumulator.apply(result, element)
     return result;

Stream.collect方法

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_27637285/article/details/107485490