Java中使用Stream API计算数值平均值的运行逻辑是什么?
Java流式计算平均值代码逻辑说明
// 求数组元素平方后的平均值 Arrays.stream(new int[] {1,2,3,4}).map(n -> n * n).average().ifPresent(System.out::println);
逐步骤运行流程
- 第一步:构建原始整型数组
new int[] {1,2,3,4},内含4个元素:1、2、3、4 - 第二步:调用
Arrays.stream()方法将数组转换为IntStream类型的数据流,为后续链式流式操作做准备 - 第三步:调用
map(n -> n * n)对数据流内的每个元素做映射转换,每个元素替换为自身的平方值,转换后流内的元素变为:1、4、9、16 - 第四步:调用
average()方法计算流内所有元素的平均值,该方法返回OptionalDouble类型,用来规避空流导致的空指针异常 - 第五步:调用
ifPresent(System.out::println),判断如果OptionalDouble中存在有效值(当前流不为空,有计算结果),就将结果输出到控制台
输出结果为7.5的原因
平方后的4个元素总和为1+4+9+16=30,平均值计算公式为总和/元素个数 = 30/4 = 7.5,因此最终输出结果为7.5。
内容的提问来源于stack exchange,提问作者Wais Shuja
相关产品推荐
相关产品推荐

