返回

深入浅出谈谈Java Stream API集合元素归约,让你秒变Java高手!

前端

Java Stream API集合元素归约简介

Java Stream API为我们提供了Stream.reduce方法用来实现集合元素的归约。reduce函数有三个参数:

  • Identity标识:一个元素,它是归约操作的初始值,如果流为空,则为默认结果。
  • Accumulator累加器:一个函数,它将当前结果和下一个元素组合成一个新结果。
  • Combiner合并器:一个函数,它将两个部分结果组合成一个最终结果。

通过这三个参数,reduce可以实现各种各样的归约操作,比如求和、求积、求最大值、求最小值等。

Java Stream API集合元素归约示例

求和

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class SumExample {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用reduce求和
        int sum = numbers.stream()
                .reduce(0, (a, b) -> a + b);

        System.out.println("The sum of the numbers is: " + sum);
    }
}

输出:

The sum of the numbers is: 15

求积

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class ProductExample {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用reduce求积
        int product = numbers.stream()
                .reduce(1, (a, b) -> a * b);

        System.out.println("The product of the numbers is: " + product);
    }
}

输出:

The product of the numbers is: 120

求最大值

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class MaxExample {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用reduce求最大值
        int max = numbers.stream()
                .reduce(Integer.MIN_VALUE, (a, b) -> Math.max(a, b));

        System.out.println("The maximum value of the numbers is: " + max);
    }
}

输出:

The maximum value of the numbers is: 5

求最小值

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class MinExample {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用reduce求最小值
        int min = numbers.stream()
                .reduce(Integer.MAX_VALUE, (a, b) -> Math.min(a, b));

        System.out.println("The minimum value of the numbers is: " + min);
    }
}

输出:

The minimum value of the numbers is: 1

总结

Java Stream API为我们提供了Stream.reduce方法用来实现集合元素的归约。reduce函数有三个参数:Identity标识、Accumulator累加器和Combiner合并器。通过这三个参数,reduce可以实现各种各样的归约操作,比如求和、求积、求最大值、求最小值等。本文详细介绍了Java Stream API集合元素归约的用法,并通过示例代码演示如何使用reduce方法实现各种常见的归约操作。希望本文对您有所帮助。