El método java8 stream reduce() utiliza

Es posible que el método reduce() no se use mucho en momentos normales, porque sus métodos comunes se encapsulan por separado. Por ejemplo sum(), max(), min(),count()都是通过reduce()操作的。

reduce() son los siguientes tres métodos

Optional<T> reduce(BinaryOperator<T> accumulator)

T reduce(T identity, BinaryOperator<T> accumulator)

<U> U reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)

La función principal es un método de un solo parámetro. Los dos siguientes aumentan el valor inicial de identidad, y el otro es aumentar la operación de valores de múltiples segmentos durante el procesamiento paralelo.

Veamos un ejemplo:

//找出最大数
        Optional<Integer> student = Stream.of(1, 2, 3, 4, 5, 6).reduce((v1, v2) -> v1 > v2 ? v1 : v2);
        System.out.println(student.get());

Los resultados de salida anteriores:

6

Una prueba de dos parámetros:

//设置一个默认值,从默认值开始处理
        Integer result = Stream.of(1, 2, 3, 4, 5, 6).reduce(0, (v1, v2) -> v1 + v2);
        System.out.println(result);

Resultado de salida: 

21

Veamos tres ejemplos de parámetros:

Integer studentId = Stream.of(1, 2, 3, 4, 5, 6).reduce(0,
                (sum, v) -> {
                    return sum + v;
                },
                (s1, s2) -> s1 + s2);

Resultado de salida:

21

Si no se utiliza el procesamiento paralelo, las funciones del método de tres parámetros y dos parámetros son exactamente las mismas, y el procesamiento posterior de s1 y s2 no juega ningún papel.Después de agregar el procesamiento paralelo, el resultado puede manejar múltiples procesamientos paralelos. El resultado se procesa de nuevo, aquí hay otro ejemplo:

Integer studentId = Stream.of(1, 2, 3, 4, 5, 6).parallel().reduce(0,
                (sum, v) -> {
                    return sum + v;
                },
                (s1, s2) -> s1 * s2);
        System.out.println(studentId);

     resultado del proceso:

720

Multiplicar múltiples resultados de procesamiento en paralelo

Supongo que te gusta

Origin blog.csdn.net/caicai250/article/details/123551246
Recomendado
Clasificación