返回
深入浅出谈谈Java Stream API集合元素归约,让你秒变Java高手!
前端
2023-10-30 20:39:33
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方法实现各种常见的归约操作。希望本文对您有所帮助。